/*
 * Copyright (C) 2019 The Turms Project
 * https://github.com/turms-im/turms
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: notification/turms_notification.proto

package im.turms.client.model.proto.notification;

/**
 * Protobuf type {@code im.turms.proto.TurmsNotification}
 */
public  final class TurmsNotification extends
    com.google.protobuf.GeneratedMessageLite<
        TurmsNotification, TurmsNotification.Builder> implements
    // @@protoc_insertion_point(message_implements:im.turms.proto.TurmsNotification)
    TurmsNotificationOrBuilder {
  private TurmsNotification() {
    reason_ = "";
  }
  public interface DataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.turms.proto.TurmsNotification.Data)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>.im.turms.proto.Int64Values ids = 1;</code>
     * @return Whether the ids field is set.
     */
    boolean hasIds();
    /**
     * <code>.im.turms.proto.Int64Values ids = 1;</code>
     * @return The ids.
     */
    im.turms.client.model.proto.model.common.Int64Values getIds();

    /**
     * <code>.im.turms.proto.Int64ValuesWithVersion ids_with_version = 2;</code>
     * @return Whether the idsWithVersion field is set.
     */
    boolean hasIdsWithVersion();
    /**
     * <code>.im.turms.proto.Int64ValuesWithVersion ids_with_version = 2;</code>
     * @return The idsWithVersion.
     */
    im.turms.client.model.proto.model.common.Int64ValuesWithVersion getIdsWithVersion();

    /**
     * <code>string url = 3;</code>
     * @return Whether the url field is set.
     */
    boolean hasUrl();
    /**
     * <code>string url = 3;</code>
     * @return The url.
     */
    java.lang.String getUrl();
    /**
     * <code>string url = 3;</code>
     * @return The bytes for url.
     */
    com.google.protobuf.ByteString
        getUrlBytes();

    /**
     * <code>.im.turms.proto.Conversations conversations = 4;</code>
     * @return Whether the conversations field is set.
     */
    boolean hasConversations();
    /**
     * <code>.im.turms.proto.Conversations conversations = 4;</code>
     * @return The conversations.
     */
    im.turms.client.model.proto.model.conversation.Conversations getConversations();

    /**
     * <code>.im.turms.proto.Messages messages = 5;</code>
     * @return Whether the messages field is set.
     */
    boolean hasMessages();
    /**
     * <code>.im.turms.proto.Messages messages = 5;</code>
     * @return The messages.
     */
    im.turms.client.model.proto.model.message.Messages getMessages();

    /**
     * <code>.im.turms.proto.MessagesWithTotalList messages_with_total_list = 6;</code>
     * @return Whether the messagesWithTotalList field is set.
     */
    boolean hasMessagesWithTotalList();
    /**
     * <code>.im.turms.proto.MessagesWithTotalList messages_with_total_list = 6;</code>
     * @return The messagesWithTotalList.
     */
    im.turms.client.model.proto.model.message.MessagesWithTotalList getMessagesWithTotalList();

    /**
     * <code>.im.turms.proto.UserSession user_session = 7;</code>
     * @return Whether the userSession field is set.
     */
    boolean hasUserSession();
    /**
     * <code>.im.turms.proto.UserSession user_session = 7;</code>
     * @return The userSession.
     */
    im.turms.client.model.proto.model.user.UserSession getUserSession();

    /**
     * <code>.im.turms.proto.UsersInfosWithVersion users_infos_with_version = 8;</code>
     * @return Whether the usersInfosWithVersion field is set.
     */
    boolean hasUsersInfosWithVersion();
    /**
     * <code>.im.turms.proto.UsersInfosWithVersion users_infos_with_version = 8;</code>
     * @return The usersInfosWithVersion.
     */
    im.turms.client.model.proto.model.user.UsersInfosWithVersion getUsersInfosWithVersion();

    /**
     * <code>.im.turms.proto.UsersOnlineStatuses users_online_statuses = 9;</code>
     * @return Whether the usersOnlineStatuses field is set.
     */
    boolean hasUsersOnlineStatuses();
    /**
     * <code>.im.turms.proto.UsersOnlineStatuses users_online_statuses = 9;</code>
     * @return The usersOnlineStatuses.
     */
    im.turms.client.model.proto.model.user.UsersOnlineStatuses getUsersOnlineStatuses();

    /**
     * <code>.im.turms.proto.UserFriendRequestsWithVersion user_friend_requests_with_version = 10;</code>
     * @return Whether the userFriendRequestsWithVersion field is set.
     */
    boolean hasUserFriendRequestsWithVersion();
    /**
     * <code>.im.turms.proto.UserFriendRequestsWithVersion user_friend_requests_with_version = 10;</code>
     * @return The userFriendRequestsWithVersion.
     */
    im.turms.client.model.proto.model.user.UserFriendRequestsWithVersion getUserFriendRequestsWithVersion();

    /**
     * <code>.im.turms.proto.UserRelationshipGroupsWithVersion user_relationship_groups_with_version = 11;</code>
     * @return Whether the userRelationshipGroupsWithVersion field is set.
     */
    boolean hasUserRelationshipGroupsWithVersion();
    /**
     * <code>.im.turms.proto.UserRelationshipGroupsWithVersion user_relationship_groups_with_version = 11;</code>
     * @return The userRelationshipGroupsWithVersion.
     */
    im.turms.client.model.proto.model.user.UserRelationshipGroupsWithVersion getUserRelationshipGroupsWithVersion();

    /**
     * <code>.im.turms.proto.UserRelationshipsWithVersion user_relationships_with_version = 12;</code>
     * @return Whether the userRelationshipsWithVersion field is set.
     */
    boolean hasUserRelationshipsWithVersion();
    /**
     * <code>.im.turms.proto.UserRelationshipsWithVersion user_relationships_with_version = 12;</code>
     * @return The userRelationshipsWithVersion.
     */
    im.turms.client.model.proto.model.user.UserRelationshipsWithVersion getUserRelationshipsWithVersion();

    /**
     * <code>.im.turms.proto.NearbyUsers nearby_users = 13;</code>
     * @return Whether the nearbyUsers field is set.
     */
    boolean hasNearbyUsers();
    /**
     * <code>.im.turms.proto.NearbyUsers nearby_users = 13;</code>
     * @return The nearbyUsers.
     */
    im.turms.client.model.proto.model.user.NearbyUsers getNearbyUsers();

    /**
     * <code>.im.turms.proto.GroupInvitationsWithVersion group_invitations_with_version = 14;</code>
     * @return Whether the groupInvitationsWithVersion field is set.
     */
    boolean hasGroupInvitationsWithVersion();
    /**
     * <code>.im.turms.proto.GroupInvitationsWithVersion group_invitations_with_version = 14;</code>
     * @return The groupInvitationsWithVersion.
     */
    im.turms.client.model.proto.model.group.GroupInvitationsWithVersion getGroupInvitationsWithVersion();

    /**
     * <code>.im.turms.proto.GroupJoinQuestionsAnswerResult group_join_question_answer_result = 15;</code>
     * @return Whether the groupJoinQuestionAnswerResult field is set.
     */
    boolean hasGroupJoinQuestionAnswerResult();
    /**
     * <code>.im.turms.proto.GroupJoinQuestionsAnswerResult group_join_question_answer_result = 15;</code>
     * @return The groupJoinQuestionAnswerResult.
     */
    im.turms.client.model.proto.model.group.GroupJoinQuestionsAnswerResult getGroupJoinQuestionAnswerResult();

    /**
     * <code>.im.turms.proto.GroupJoinRequestsWithVersion group_join_requests_with_version = 16;</code>
     * @return Whether the groupJoinRequestsWithVersion field is set.
     */
    boolean hasGroupJoinRequestsWithVersion();
    /**
     * <code>.im.turms.proto.GroupJoinRequestsWithVersion group_join_requests_with_version = 16;</code>
     * @return The groupJoinRequestsWithVersion.
     */
    im.turms.client.model.proto.model.group.GroupJoinRequestsWithVersion getGroupJoinRequestsWithVersion();

    /**
     * <code>.im.turms.proto.GroupJoinQuestionsWithVersion group_join_questions_with_version = 17;</code>
     * @return Whether the groupJoinQuestionsWithVersion field is set.
     */
    boolean hasGroupJoinQuestionsWithVersion();
    /**
     * <code>.im.turms.proto.GroupJoinQuestionsWithVersion group_join_questions_with_version = 17;</code>
     * @return The groupJoinQuestionsWithVersion.
     */
    im.turms.client.model.proto.model.group.GroupJoinQuestionsWithVersion getGroupJoinQuestionsWithVersion();

    /**
     * <code>.im.turms.proto.GroupMembersWithVersion group_members_with_version = 18;</code>
     * @return Whether the groupMembersWithVersion field is set.
     */
    boolean hasGroupMembersWithVersion();
    /**
     * <code>.im.turms.proto.GroupMembersWithVersion group_members_with_version = 18;</code>
     * @return The groupMembersWithVersion.
     */
    im.turms.client.model.proto.model.group.GroupMembersWithVersion getGroupMembersWithVersion();

    /**
     * <code>.im.turms.proto.GroupsWithVersion groups_with_version = 19;</code>
     * @return Whether the groupsWithVersion field is set.
     */
    boolean hasGroupsWithVersion();
    /**
     * <code>.im.turms.proto.GroupsWithVersion groups_with_version = 19;</code>
     * @return The groupsWithVersion.
     */
    im.turms.client.model.proto.model.group.GroupsWithVersion getGroupsWithVersion();

    public im.turms.client.model.proto.notification.TurmsNotification.Data.KindCase getKindCase();
  }
  /**
   * Protobuf type {@code im.turms.proto.TurmsNotification.Data}
   */
  public  static final class Data extends
      com.google.protobuf.GeneratedMessageLite<
          Data, Data.Builder> implements
      // @@protoc_insertion_point(message_implements:im.turms.proto.TurmsNotification.Data)
      DataOrBuilder {
    private Data() {
    }
    private int kindCase_ = 0;
    private java.lang.Object kind_;
    public enum KindCase {
      IDS(1),
      IDS_WITH_VERSION(2),
      URL(3),
      CONVERSATIONS(4),
      MESSAGES(5),
      MESSAGES_WITH_TOTAL_LIST(6),
      USER_SESSION(7),
      USERS_INFOS_WITH_VERSION(8),
      USERS_ONLINE_STATUSES(9),
      USER_FRIEND_REQUESTS_WITH_VERSION(10),
      USER_RELATIONSHIP_GROUPS_WITH_VERSION(11),
      USER_RELATIONSHIPS_WITH_VERSION(12),
      NEARBY_USERS(13),
      GROUP_INVITATIONS_WITH_VERSION(14),
      GROUP_JOIN_QUESTION_ANSWER_RESULT(15),
      GROUP_JOIN_REQUESTS_WITH_VERSION(16),
      GROUP_JOIN_QUESTIONS_WITH_VERSION(17),
      GROUP_MEMBERS_WITH_VERSION(18),
      GROUPS_WITH_VERSION(19),
      KIND_NOT_SET(0);
      private final int value;
      private KindCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static KindCase valueOf(int value) {
        return forNumber(value);
      }

      public static KindCase forNumber(int value) {
        switch (value) {
          case 1: return IDS;
          case 2: return IDS_WITH_VERSION;
          case 3: return URL;
          case 4: return CONVERSATIONS;
          case 5: return MESSAGES;
          case 6: return MESSAGES_WITH_TOTAL_LIST;
          case 7: return USER_SESSION;
          case 8: return USERS_INFOS_WITH_VERSION;
          case 9: return USERS_ONLINE_STATUSES;
          case 10: return USER_FRIEND_REQUESTS_WITH_VERSION;
          case 11: return USER_RELATIONSHIP_GROUPS_WITH_VERSION;
          case 12: return USER_RELATIONSHIPS_WITH_VERSION;
          case 13: return NEARBY_USERS;
          case 14: return GROUP_INVITATIONS_WITH_VERSION;
          case 15: return GROUP_JOIN_QUESTION_ANSWER_RESULT;
          case 16: return GROUP_JOIN_REQUESTS_WITH_VERSION;
          case 17: return GROUP_JOIN_QUESTIONS_WITH_VERSION;
          case 18: return GROUP_MEMBERS_WITH_VERSION;
          case 19: return GROUPS_WITH_VERSION;
          case 0: return KIND_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    @java.lang.Override
    public KindCase
    getKindCase() {
      return KindCase.forNumber(
          kindCase_);
    }

    private void clearKind() {
      kindCase_ = 0;
      kind_ = null;
    }

    public static final int IDS_FIELD_NUMBER = 1;
    /**
     * <code>.im.turms.proto.Int64Values ids = 1;</code>
     */
    @java.lang.Override
    public boolean hasIds() {
      return kindCase_ == 1;
    }
    /**
     * <code>.im.turms.proto.Int64Values ids = 1;</code>
     */
    @java.lang.Override
    public im.turms.client.model.proto.model.common.Int64Values getIds() {
      if (kindCase_ == 1) {
         return (im.turms.client.model.proto.model.common.Int64Values) kind_;
      }
      return im.turms.client.model.proto.model.common.Int64Values.getDefaultInstance();
    }
    /**
     * <code>.im.turms.proto.Int64Values ids = 1;</code>
     */
    private void setIds(im.turms.client.model.proto.model.common.Int64Values value) {
      value.getClass();
  kind_ = value;
      kindCase_ = 1;
    }
    /**
     * <code>.im.turms.proto.Int64Values ids = 1;</code>
     */
    private void mergeIds(im.turms.client.model.proto.model.common.Int64Values value) {
      value.getClass();
  if (kindCase_ == 1 &&
          kind_ != im.turms.client.model.proto.model.common.Int64Values.getDefaultInstance()) {
        kind_ = im.turms.client.model.proto.model.common.Int64Values.newBuilder((im.turms.client.model.proto.model.common.Int64Values) kind_)
            .mergeFrom(value).buildPartial();
      } else {
        kind_ = value;
      }
      kindCase_ = 1;
    }
    /**
     * <code>.im.turms.proto.Int64Values ids = 1;</code>
     */
    private void clearIds() {
      if (kindCase_ == 1) {
        kindCase_ = 0;
        kind_ = null;
      }
    }

    public static final int IDS_WITH_VERSION_FIELD_NUMBER = 2;
    /**
     * <code>.im.turms.proto.Int64ValuesWithVersion ids_with_version = 2;</code>
     */
    @java.lang.Override
    public boolean hasIdsWithVersion() {
      return kindCase_ == 2;
    }
    /**
     * <code>.im.turms.proto.Int64ValuesWithVersion ids_with_version = 2;</code>
     */
    @java.lang.Override
    public im.turms.client.model.proto.model.common.Int64ValuesWithVersion getIdsWithVersion() {
      if (kindCase_ == 2) {
         return (im.turms.client.model.proto.model.common.Int64ValuesWithVersion) kind_;
      }
      return im.turms.client.model.proto.model.common.Int64ValuesWithVersion.getDefaultInstance();
    }
    /**
     * <code>.im.turms.proto.Int64ValuesWithVersion ids_with_version = 2;</code>
     */
    private void setIdsWithVersion(im.turms.client.model.proto.model.common.Int64ValuesWithVersion value) {
      value.getClass();
  kind_ = value;
      kindCase_ = 2;
    }
    /**
     * <code>.im.turms.proto.Int64ValuesWithVersion ids_with_version = 2;</code>
     */
    private void mergeIdsWithVersion(im.turms.client.model.proto.model.common.Int64ValuesWithVersion value) {
      value.getClass();
  if (kindCase_ == 2 &&
          kind_ != im.turms.client.model.proto.model.common.Int64ValuesWithVersion.getDefaultInstance()) {
        kind_ = im.turms.client.model.proto.model.common.Int64ValuesWithVersion.newBuilder((im.turms.client.model.proto.model.common.Int64ValuesWithVersion) kind_)
            .mergeFrom(value).buildPartial();
      } else {
        kind_ = value;
      }
      kindCase_ = 2;
    }
    /**
     * <code>.im.turms.proto.Int64ValuesWithVersion ids_with_version = 2;</code>
     */
    private void clearIdsWithVersion() {
      if (kindCase_ == 2) {
        kindCase_ = 0;
        kind_ = null;
      }
    }

    public static final int URL_FIELD_NUMBER = 3;
    /**
     * <code>string url = 3;</code>
     * @return Whether the url field is set.
     */
    @java.lang.Override
    public boolean hasUrl() {
      return kindCase_ == 3;
    }
    /**
     * <code>string url = 3;</code>
     * @return The url.
     */
    @java.lang.Override
    public java.lang.String getUrl() {
      java.lang.String ref = "";
      if (kindCase_ == 3) {
        ref = (java.lang.String) kind_;
      }
      return ref;
    }
    /**
     * <code>string url = 3;</code>
     * @return The bytes for url.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUrlBytes() {
      java.lang.String ref = "";
      if (kindCase_ == 3) {
        ref = (java.lang.String) kind_;
      }
      return com.google.protobuf.ByteString.copyFromUtf8(ref);
    }
    /**
     * <code>string url = 3;</code>
     * @param value The url to set.
     */
    private void setUrl(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  kindCase_ = 3;
      kind_ = value;
    }
    /**
     * <code>string url = 3;</code>
     */
    private void clearUrl() {
      if (kindCase_ == 3) {
        kindCase_ = 0;
        kind_ = null;
      }
    }
    /**
     * <code>string url = 3;</code>
     * @param value The bytes for url to set.
     */
    private void setUrlBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      kind_ = value.toStringUtf8();
      kindCase_ = 3;
    }

    public static final int CONVERSATIONS_FIELD_NUMBER = 4;
    /**
     * <code>.im.turms.proto.Conversations conversations = 4;</code>
     */
    @java.lang.Override
    public boolean hasConversations() {
      return kindCase_ == 4;
    }
    /**
     * <code>.im.turms.proto.Conversations conversations = 4;</code>
     */
    @java.lang.Override
    public im.turms.client.model.proto.model.conversation.Conversations getConversations() {
      if (kindCase_ == 4) {
         return (im.turms.client.model.proto.model.conversation.Conversations) kind_;
      }
      return im.turms.client.model.proto.model.conversation.Conversations.getDefaultInstance();
    }
    /**
     * <code>.im.turms.proto.Conversations conversations = 4;</code>
     */
    private void setConversations(im.turms.client.model.proto.model.conversation.Conversations value) {
      value.getClass();
  kind_ = value;
      kindCase_ = 4;
    }
    /**
     * <code>.im.turms.proto.Conversations conversations = 4;</code>
     */
    private void mergeConversations(im.turms.client.model.proto.model.conversation.Conversations value) {
      value.getClass();
  if (kindCase_ == 4 &&
          kind_ != im.turms.client.model.proto.model.conversation.Conversations.getDefaultInstance()) {
        kind_ = im.turms.client.model.proto.model.conversation.Conversations.newBuilder((im.turms.client.model.proto.model.conversation.Conversations) kind_)
            .mergeFrom(value).buildPartial();
      } else {
        kind_ = value;
      }
      kindCase_ = 4;
    }
    /**
     * <code>.im.turms.proto.Conversations conversations = 4;</code>
     */
    private void clearConversations() {
      if (kindCase_ == 4) {
        kindCase_ = 0;
        kind_ = null;
      }
    }

    public static final int MESSAGES_FIELD_NUMBER = 5;
    /**
     * <code>.im.turms.proto.Messages messages = 5;</code>
     */
    @java.lang.Override
    public boolean hasMessages() {
      return kindCase_ == 5;
    }
    /**
     * <code>.im.turms.proto.Messages messages = 5;</code>
     */
    @java.lang.Override
    public im.turms.client.model.proto.model.message.Messages getMessages() {
      if (kindCase_ == 5) {
         return (im.turms.client.model.proto.model.message.Messages) kind_;
      }
      return im.turms.client.model.proto.model.message.Messages.getDefaultInstance();
    }
    /**
     * <code>.im.turms.proto.Messages messages = 5;</code>
     */
    private void setMessages(im.turms.client.model.proto.model.message.Messages value) {
      value.getClass();
  kind_ = value;
      kindCase_ = 5;
    }
    /**
     * <code>.im.turms.proto.Messages messages = 5;</code>
     */
    private void mergeMessages(im.turms.client.model.proto.model.message.Messages value) {
      value.getClass();
  if (kindCase_ == 5 &&
          kind_ != im.turms.client.model.proto.model.message.Messages.getDefaultInstance()) {
        kind_ = im.turms.client.model.proto.model.message.Messages.newBuilder((im.turms.client.model.proto.model.message.Messages) kind_)
            .mergeFrom(value).buildPartial();
      } else {
        kind_ = value;
      }
      kindCase_ = 5;
    }
    /**
     * <code>.im.turms.proto.Messages messages = 5;</code>
     */
    private void clearMessages() {
      if (kindCase_ == 5) {
        kindCase_ = 0;
        kind_ = null;
      }
    }

    public static final int MESSAGES_WITH_TOTAL_LIST_FIELD_NUMBER = 6;
    /**
     * <code>.im.turms.proto.MessagesWithTotalList messages_with_total_list = 6;</code>
     */
    @java.lang.Override
    public boolean hasMessagesWithTotalList() {
      return kindCase_ == 6;
    }
    /**
     * <code>.im.turms.proto.MessagesWithTotalList messages_with_total_list = 6;</code>
     */
    @java.lang.Override
    public im.turms.client.model.proto.model.message.MessagesWithTotalList getMessagesWithTotalList() {
      if (kindCase_ == 6) {
         return (im.turms.client.model.proto.model.message.MessagesWithTotalList) kind_;
      }
      return im.turms.client.model.proto.model.message.MessagesWithTotalList.getDefaultInstance();
    }
    /**
     * <code>.im.turms.proto.MessagesWithTotalList messages_with_total_list = 6;</code>
     */
    private void setMessagesWithTotalList(im.turms.client.model.proto.model.message.MessagesWithTotalList value) {
      value.getClass();
  kind_ = value;
      kindCase_ = 6;
    }
    /**
     * <code>.im.turms.proto.MessagesWithTotalList messages_with_total_list = 6;</code>
     */
    private void mergeMessagesWithTotalList(im.turms.client.model.proto.model.message.MessagesWithTotalList value) {
      value.getClass();
  if (kindCase_ == 6 &&
          kind_ != im.turms.client.model.proto.model.message.MessagesWithTotalList.getDefaultInstance()) {
        kind_ = im.turms.client.model.proto.model.message.MessagesWithTotalList.newBuilder((im.turms.client.model.proto.model.message.MessagesWithTotalList) kind_)
            .mergeFrom(value).buildPartial();
      } else {
        kind_ = value;
      }
      kindCase_ = 6;
    }
    /**
     * <code>.im.turms.proto.MessagesWithTotalList messages_with_total_list = 6;</code>
     */
    private void clearMessagesWithTotalList() {
      if (kindCase_ == 6) {
        kindCase_ = 0;
        kind_ = null;
      }
    }

    public static final int USER_SESSION_FIELD_NUMBER = 7;
    /**
     * <code>.im.turms.proto.UserSession user_session = 7;</code>
     */
    @java.lang.Override
    public boolean hasUserSession() {
      return kindCase_ == 7;
    }
    /**
     * <code>.im.turms.proto.UserSession user_session = 7;</code>
     */
    @java.lang.Override
    public im.turms.client.model.proto.model.user.UserSession getUserSession() {
      if (kindCase_ == 7) {
         return (im.turms.client.model.proto.model.user.UserSession) kind_;
      }
      return im.turms.client.model.proto.model.user.UserSession.getDefaultInstance();
    }
    /**
     * <code>.im.turms.proto.UserSession user_session = 7;</code>
     */
    private void setUserSession(im.turms.client.model.proto.model.user.UserSession value) {
      value.getClass();
  kind_ = value;
      kindCase_ = 7;
    }
    /**
     * <code>.im.turms.proto.UserSession user_session = 7;</code>
     */
    private void mergeUserSession(im.turms.client.model.proto.model.user.UserSession value) {
      value.getClass();
  if (kindCase_ == 7 &&
          kind_ != im.turms.client.model.proto.model.user.UserSession.getDefaultInstance()) {
        kind_ = im.turms.client.model.proto.model.user.UserSession.newBuilder((im.turms.client.model.proto.model.user.UserSession) kind_)
            .mergeFrom(value).buildPartial();
      } else {
        kind_ = value;
      }
      kindCase_ = 7;
    }
    /**
     * <code>.im.turms.proto.UserSession user_session = 7;</code>
     */
    private void clearUserSession() {
      if (kindCase_ == 7) {
        kindCase_ = 0;
        kind_ = null;
      }
    }

    public static final int USERS_INFOS_WITH_VERSION_FIELD_NUMBER = 8;
    /**
     * <code>.im.turms.proto.UsersInfosWithVersion users_infos_with_version = 8;</code>
     */
    @java.lang.Override
    public boolean hasUsersInfosWithVersion() {
      return kindCase_ == 8;
    }
    /**
     * <code>.im.turms.proto.UsersInfosWithVersion users_infos_with_version = 8;</code>
     */
    @java.lang.Override
    public im.turms.client.model.proto.model.user.UsersInfosWithVersion getUsersInfosWithVersion() {
      if (kindCase_ == 8) {
         return (im.turms.client.model.proto.model.user.UsersInfosWithVersion) kind_;
      }
      return im.turms.client.model.proto.model.user.UsersInfosWithVersion.getDefaultInstance();
    }
    /**
     * <code>.im.turms.proto.UsersInfosWithVersion users_infos_with_version = 8;</code>
     */
    private void setUsersInfosWithVersion(im.turms.client.model.proto.model.user.UsersInfosWithVersion value) {
      value.getClass();
  kind_ = value;
      kindCase_ = 8;
    }
    /**
     * <code>.im.turms.proto.UsersInfosWithVersion users_infos_with_version = 8;</code>
     */
    private void mergeUsersInfosWithVersion(im.turms.client.model.proto.model.user.UsersInfosWithVersion value) {
      value.getClass();
  if (kindCase_ == 8 &&
          kind_ != im.turms.client.model.proto.model.user.UsersInfosWithVersion.getDefaultInstance()) {
        kind_ = im.turms.client.model.proto.model.user.UsersInfosWithVersion.newBuilder((im.turms.client.model.proto.model.user.UsersInfosWithVersion) kind_)
            .mergeFrom(value).buildPartial();
      } else {
        kind_ = value;
      }
      kindCase_ = 8;
    }
    /**
     * <code>.im.turms.proto.UsersInfosWithVersion users_infos_with_version = 8;</code>
     */
    private void clearUsersInfosWithVersion() {
      if (kindCase_ == 8) {
        kindCase_ = 0;
        kind_ = null;
      }
    }

    public static final int USERS_ONLINE_STATUSES_FIELD_NUMBER = 9;
    /**
     * <code>.im.turms.proto.UsersOnlineStatuses users_online_statuses = 9;</code>
     */
    @java.lang.Override
    public boolean hasUsersOnlineStatuses() {
      return kindCase_ == 9;
    }
    /**
     * <code>.im.turms.proto.UsersOnlineStatuses users_online_statuses = 9;</code>
     */
    @java.lang.Override
    public im.turms.client.model.proto.model.user.UsersOnlineStatuses getUsersOnlineStatuses() {
      if (kindCase_ == 9) {
         return (im.turms.client.model.proto.model.user.UsersOnlineStatuses) kind_;
      }
      return im.turms.client.model.proto.model.user.UsersOnlineStatuses.getDefaultInstance();
    }
    /**
     * <code>.im.turms.proto.UsersOnlineStatuses users_online_statuses = 9;</code>
     */
    private void setUsersOnlineStatuses(im.turms.client.model.proto.model.user.UsersOnlineStatuses value) {
      value.getClass();
  kind_ = value;
      kindCase_ = 9;
    }
    /**
     * <code>.im.turms.proto.UsersOnlineStatuses users_online_statuses = 9;</code>
     */
    private void mergeUsersOnlineStatuses(im.turms.client.model.proto.model.user.UsersOnlineStatuses value) {
      value.getClass();
  if (kindCase_ == 9 &&
          kind_ != im.turms.client.model.proto.model.user.UsersOnlineStatuses.getDefaultInstance()) {
        kind_ = im.turms.client.model.proto.model.user.UsersOnlineStatuses.newBuilder((im.turms.client.model.proto.model.user.UsersOnlineStatuses) kind_)
            .mergeFrom(value).buildPartial();
      } else {
        kind_ = value;
      }
      kindCase_ = 9;
    }
    /**
     * <code>.im.turms.proto.UsersOnlineStatuses users_online_statuses = 9;</code>
     */
    private void clearUsersOnlineStatuses() {
      if (kindCase_ == 9) {
        kindCase_ = 0;
        kind_ = null;
      }
    }

    public static final int USER_FRIEND_REQUESTS_WITH_VERSION_FIELD_NUMBER = 10;
    /**
     * <code>.im.turms.proto.UserFriendRequestsWithVersion user_friend_requests_with_version = 10;</code>
     */
    @java.lang.Override
    public boolean hasUserFriendRequestsWithVersion() {
      return kindCase_ == 10;
    }
    /**
     * <code>.im.turms.proto.UserFriendRequestsWithVersion user_friend_requests_with_version = 10;</code>
     */
    @java.lang.Override
    public im.turms.client.model.proto.model.user.UserFriendRequestsWithVersion getUserFriendRequestsWithVersion() {
      if (kindCase_ == 10) {
         return (im.turms.client.model.proto.model.user.UserFriendRequestsWithVersion) kind_;
      }
      return im.turms.client.model.proto.model.user.UserFriendRequestsWithVersion.getDefaultInstance();
    }
    /**
     * <code>.im.turms.proto.UserFriendRequestsWithVersion user_friend_requests_with_version = 10;</code>
     */
    private void setUserFriendRequestsWithVersion(im.turms.client.model.proto.model.user.UserFriendRequestsWithVersion value) {
      value.getClass();
  kind_ = value;
      kindCase_ = 10;
    }
    /**
     * <code>.im.turms.proto.UserFriendRequestsWithVersion user_friend_requests_with_version = 10;</code>
     */
    private void mergeUserFriendRequestsWithVersion(im.turms.client.model.proto.model.user.UserFriendRequestsWithVersion value) {
      value.getClass();
  if (kindCase_ == 10 &&
          kind_ != im.turms.client.model.proto.model.user.UserFriendRequestsWithVersion.getDefaultInstance()) {
        kind_ = im.turms.client.model.proto.model.user.UserFriendRequestsWithVersion.newBuilder((im.turms.client.model.proto.model.user.UserFriendRequestsWithVersion) kind_)
            .mergeFrom(value).buildPartial();
      } else {
        kind_ = value;
      }
      kindCase_ = 10;
    }
    /**
     * <code>.im.turms.proto.UserFriendRequestsWithVersion user_friend_requests_with_version = 10;</code>
     */
    private void clearUserFriendRequestsWithVersion() {
      if (kindCase_ == 10) {
        kindCase_ = 0;
        kind_ = null;
      }
    }

    public static final int USER_RELATIONSHIP_GROUPS_WITH_VERSION_FIELD_NUMBER = 11;
    /**
     * <code>.im.turms.proto.UserRelationshipGroupsWithVersion user_relationship_groups_with_version = 11;</code>
     */
    @java.lang.Override
    public boolean hasUserRelationshipGroupsWithVersion() {
      return kindCase_ == 11;
    }
    /**
     * <code>.im.turms.proto.UserRelationshipGroupsWithVersion user_relationship_groups_with_version = 11;</code>
     */
    @java.lang.Override
    public im.turms.client.model.proto.model.user.UserRelationshipGroupsWithVersion getUserRelationshipGroupsWithVersion() {
      if (kindCase_ == 11) {
         return (im.turms.client.model.proto.model.user.UserRelationshipGroupsWithVersion) kind_;
      }
      return im.turms.client.model.proto.model.user.UserRelationshipGroupsWithVersion.getDefaultInstance();
    }
    /**
     * <code>.im.turms.proto.UserRelationshipGroupsWithVersion user_relationship_groups_with_version = 11;</code>
     */
    private void setUserRelationshipGroupsWithVersion(im.turms.client.model.proto.model.user.UserRelationshipGroupsWithVersion value) {
      value.getClass();
  kind_ = value;
      kindCase_ = 11;
    }
    /**
     * <code>.im.turms.proto.UserRelationshipGroupsWithVersion user_relationship_groups_with_version = 11;</code>
     */
    private void mergeUserRelationshipGroupsWithVersion(im.turms.client.model.proto.model.user.UserRelationshipGroupsWithVersion value) {
      value.getClass();
  if (kindCase_ == 11 &&
          kind_ != im.turms.client.model.proto.model.user.UserRelationshipGroupsWithVersion.getDefaultInstance()) {
        kind_ = im.turms.client.model.proto.model.user.UserRelationshipGroupsWithVersion.newBuilder((im.turms.client.model.proto.model.user.UserRelationshipGroupsWithVersion) kind_)
            .mergeFrom(value).buildPartial();
      } else {
        kind_ = value;
      }
      kindCase_ = 11;
    }
    /**
     * <code>.im.turms.proto.UserRelationshipGroupsWithVersion user_relationship_groups_with_version = 11;</code>
     */
    private void clearUserRelationshipGroupsWithVersion() {
      if (kindCase_ == 11) {
        kindCase_ = 0;
        kind_ = null;
      }
    }

    public static final int USER_RELATIONSHIPS_WITH_VERSION_FIELD_NUMBER = 12;
    /**
     * <code>.im.turms.proto.UserRelationshipsWithVersion user_relationships_with_version = 12;</code>
     */
    @java.lang.Override
    public boolean hasUserRelationshipsWithVersion() {
      return kindCase_ == 12;
    }
    /**
     * <code>.im.turms.proto.UserRelationshipsWithVersion user_relationships_with_version = 12;</code>
     */
    @java.lang.Override
    public im.turms.client.model.proto.model.user.UserRelationshipsWithVersion getUserRelationshipsWithVersion() {
      if (kindCase_ == 12) {
         return (im.turms.client.model.proto.model.user.UserRelationshipsWithVersion) kind_;
      }
      return im.turms.client.model.proto.model.user.UserRelationshipsWithVersion.getDefaultInstance();
    }
    /**
     * <code>.im.turms.proto.UserRelationshipsWithVersion user_relationships_with_version = 12;</code>
     */
    private void setUserRelationshipsWithVersion(im.turms.client.model.proto.model.user.UserRelationshipsWithVersion value) {
      value.getClass();
  kind_ = value;
      kindCase_ = 12;
    }
    /**
     * <code>.im.turms.proto.UserRelationshipsWithVersion user_relationships_with_version = 12;</code>
     */
    private void mergeUserRelationshipsWithVersion(im.turms.client.model.proto.model.user.UserRelationshipsWithVersion value) {
      value.getClass();
  if (kindCase_ == 12 &&
          kind_ != im.turms.client.model.proto.model.user.UserRelationshipsWithVersion.getDefaultInstance()) {
        kind_ = im.turms.client.model.proto.model.user.UserRelationshipsWithVersion.newBuilder((im.turms.client.model.proto.model.user.UserRelationshipsWithVersion) kind_)
            .mergeFrom(value).buildPartial();
      } else {
        kind_ = value;
      }
      kindCase_ = 12;
    }
    /**
     * <code>.im.turms.proto.UserRelationshipsWithVersion user_relationships_with_version = 12;</code>
     */
    private void clearUserRelationshipsWithVersion() {
      if (kindCase_ == 12) {
        kindCase_ = 0;
        kind_ = null;
      }
    }

    public static final int NEARBY_USERS_FIELD_NUMBER = 13;
    /**
     * <code>.im.turms.proto.NearbyUsers nearby_users = 13;</code>
     */
    @java.lang.Override
    public boolean hasNearbyUsers() {
      return kindCase_ == 13;
    }
    /**
     * <code>.im.turms.proto.NearbyUsers nearby_users = 13;</code>
     */
    @java.lang.Override
    public im.turms.client.model.proto.model.user.NearbyUsers getNearbyUsers() {
      if (kindCase_ == 13) {
         return (im.turms.client.model.proto.model.user.NearbyUsers) kind_;
      }
      return im.turms.client.model.proto.model.user.NearbyUsers.getDefaultInstance();
    }
    /**
     * <code>.im.turms.proto.NearbyUsers nearby_users = 13;</code>
     */
    private void setNearbyUsers(im.turms.client.model.proto.model.user.NearbyUsers value) {
      value.getClass();
  kind_ = value;
      kindCase_ = 13;
    }
    /**
     * <code>.im.turms.proto.NearbyUsers nearby_users = 13;</code>
     */
    private void mergeNearbyUsers(im.turms.client.model.proto.model.user.NearbyUsers value) {
      value.getClass();
  if (kindCase_ == 13 &&
          kind_ != im.turms.client.model.proto.model.user.NearbyUsers.getDefaultInstance()) {
        kind_ = im.turms.client.model.proto.model.user.NearbyUsers.newBuilder((im.turms.client.model.proto.model.user.NearbyUsers) kind_)
            .mergeFrom(value).buildPartial();
      } else {
        kind_ = value;
      }
      kindCase_ = 13;
    }
    /**
     * <code>.im.turms.proto.NearbyUsers nearby_users = 13;</code>
     */
    private void clearNearbyUsers() {
      if (kindCase_ == 13) {
        kindCase_ = 0;
        kind_ = null;
      }
    }

    public static final int GROUP_INVITATIONS_WITH_VERSION_FIELD_NUMBER = 14;
    /**
     * <code>.im.turms.proto.GroupInvitationsWithVersion group_invitations_with_version = 14;</code>
     */
    @java.lang.Override
    public boolean hasGroupInvitationsWithVersion() {
      return kindCase_ == 14;
    }
    /**
     * <code>.im.turms.proto.GroupInvitationsWithVersion group_invitations_with_version = 14;</code>
     */
    @java.lang.Override
    public im.turms.client.model.proto.model.group.GroupInvitationsWithVersion getGroupInvitationsWithVersion() {
      if (kindCase_ == 14) {
         return (im.turms.client.model.proto.model.group.GroupInvitationsWithVersion) kind_;
      }
      return im.turms.client.model.proto.model.group.GroupInvitationsWithVersion.getDefaultInstance();
    }
    /**
     * <code>.im.turms.proto.GroupInvitationsWithVersion group_invitations_with_version = 14;</code>
     */
    private void setGroupInvitationsWithVersion(im.turms.client.model.proto.model.group.GroupInvitationsWithVersion value) {
      value.getClass();
  kind_ = value;
      kindCase_ = 14;
    }
    /**
     * <code>.im.turms.proto.GroupInvitationsWithVersion group_invitations_with_version = 14;</code>
     */
    private void mergeGroupInvitationsWithVersion(im.turms.client.model.proto.model.group.GroupInvitationsWithVersion value) {
      value.getClass();
  if (kindCase_ == 14 &&
          kind_ != im.turms.client.model.proto.model.group.GroupInvitationsWithVersion.getDefaultInstance()) {
        kind_ = im.turms.client.model.proto.model.group.GroupInvitationsWithVersion.newBuilder((im.turms.client.model.proto.model.group.GroupInvitationsWithVersion) kind_)
            .mergeFrom(value).buildPartial();
      } else {
        kind_ = value;
      }
      kindCase_ = 14;
    }
    /**
     * <code>.im.turms.proto.GroupInvitationsWithVersion group_invitations_with_version = 14;</code>
     */
    private void clearGroupInvitationsWithVersion() {
      if (kindCase_ == 14) {
        kindCase_ = 0;
        kind_ = null;
      }
    }

    public static final int GROUP_JOIN_QUESTION_ANSWER_RESULT_FIELD_NUMBER = 15;
    /**
     * <code>.im.turms.proto.GroupJoinQuestionsAnswerResult group_join_question_answer_result = 15;</code>
     */
    @java.lang.Override
    public boolean hasGroupJoinQuestionAnswerResult() {
      return kindCase_ == 15;
    }
    /**
     * <code>.im.turms.proto.GroupJoinQuestionsAnswerResult group_join_question_answer_result = 15;</code>
     */
    @java.lang.Override
    public im.turms.client.model.proto.model.group.GroupJoinQuestionsAnswerResult getGroupJoinQuestionAnswerResult() {
      if (kindCase_ == 15) {
         return (im.turms.client.model.proto.model.group.GroupJoinQuestionsAnswerResult) kind_;
      }
      return im.turms.client.model.proto.model.group.GroupJoinQuestionsAnswerResult.getDefaultInstance();
    }
    /**
     * <code>.im.turms.proto.GroupJoinQuestionsAnswerResult group_join_question_answer_result = 15;</code>
     */
    private void setGroupJoinQuestionAnswerResult(im.turms.client.model.proto.model.group.GroupJoinQuestionsAnswerResult value) {
      value.getClass();
  kind_ = value;
      kindCase_ = 15;
    }
    /**
     * <code>.im.turms.proto.GroupJoinQuestionsAnswerResult group_join_question_answer_result = 15;</code>
     */
    private void mergeGroupJoinQuestionAnswerResult(im.turms.client.model.proto.model.group.GroupJoinQuestionsAnswerResult value) {
      value.getClass();
  if (kindCase_ == 15 &&
          kind_ != im.turms.client.model.proto.model.group.GroupJoinQuestionsAnswerResult.getDefaultInstance()) {
        kind_ = im.turms.client.model.proto.model.group.GroupJoinQuestionsAnswerResult.newBuilder((im.turms.client.model.proto.model.group.GroupJoinQuestionsAnswerResult) kind_)
            .mergeFrom(value).buildPartial();
      } else {
        kind_ = value;
      }
      kindCase_ = 15;
    }
    /**
     * <code>.im.turms.proto.GroupJoinQuestionsAnswerResult group_join_question_answer_result = 15;</code>
     */
    private void clearGroupJoinQuestionAnswerResult() {
      if (kindCase_ == 15) {
        kindCase_ = 0;
        kind_ = null;
      }
    }

    public static final int GROUP_JOIN_REQUESTS_WITH_VERSION_FIELD_NUMBER = 16;
    /**
     * <code>.im.turms.proto.GroupJoinRequestsWithVersion group_join_requests_with_version = 16;</code>
     */
    @java.lang.Override
    public boolean hasGroupJoinRequestsWithVersion() {
      return kindCase_ == 16;
    }
    /**
     * <code>.im.turms.proto.GroupJoinRequestsWithVersion group_join_requests_with_version = 16;</code>
     */
    @java.lang.Override
    public im.turms.client.model.proto.model.group.GroupJoinRequestsWithVersion getGroupJoinRequestsWithVersion() {
      if (kindCase_ == 16) {
         return (im.turms.client.model.proto.model.group.GroupJoinRequestsWithVersion) kind_;
      }
      return im.turms.client.model.proto.model.group.GroupJoinRequestsWithVersion.getDefaultInstance();
    }
    /**
     * <code>.im.turms.proto.GroupJoinRequestsWithVersion group_join_requests_with_version = 16;</code>
     */
    private void setGroupJoinRequestsWithVersion(im.turms.client.model.proto.model.group.GroupJoinRequestsWithVersion value) {
      value.getClass();
  kind_ = value;
      kindCase_ = 16;
    }
    /**
     * <code>.im.turms.proto.GroupJoinRequestsWithVersion group_join_requests_with_version = 16;</code>
     */
    private void mergeGroupJoinRequestsWithVersion(im.turms.client.model.proto.model.group.GroupJoinRequestsWithVersion value) {
      value.getClass();
  if (kindCase_ == 16 &&
          kind_ != im.turms.client.model.proto.model.group.GroupJoinRequestsWithVersion.getDefaultInstance()) {
        kind_ = im.turms.client.model.proto.model.group.GroupJoinRequestsWithVersion.newBuilder((im.turms.client.model.proto.model.group.GroupJoinRequestsWithVersion) kind_)
            .mergeFrom(value).buildPartial();
      } else {
        kind_ = value;
      }
      kindCase_ = 16;
    }
    /**
     * <code>.im.turms.proto.GroupJoinRequestsWithVersion group_join_requests_with_version = 16;</code>
     */
    private void clearGroupJoinRequestsWithVersion() {
      if (kindCase_ == 16) {
        kindCase_ = 0;
        kind_ = null;
      }
    }

    public static final int GROUP_JOIN_QUESTIONS_WITH_VERSION_FIELD_NUMBER = 17;
    /**
     * <code>.im.turms.proto.GroupJoinQuestionsWithVersion group_join_questions_with_version = 17;</code>
     */
    @java.lang.Override
    public boolean hasGroupJoinQuestionsWithVersion() {
      return kindCase_ == 17;
    }
    /**
     * <code>.im.turms.proto.GroupJoinQuestionsWithVersion group_join_questions_with_version = 17;</code>
     */
    @java.lang.Override
    public im.turms.client.model.proto.model.group.GroupJoinQuestionsWithVersion getGroupJoinQuestionsWithVersion() {
      if (kindCase_ == 17) {
         return (im.turms.client.model.proto.model.group.GroupJoinQuestionsWithVersion) kind_;
      }
      return im.turms.client.model.proto.model.group.GroupJoinQuestionsWithVersion.getDefaultInstance();
    }
    /**
     * <code>.im.turms.proto.GroupJoinQuestionsWithVersion group_join_questions_with_version = 17;</code>
     */
    private void setGroupJoinQuestionsWithVersion(im.turms.client.model.proto.model.group.GroupJoinQuestionsWithVersion value) {
      value.getClass();
  kind_ = value;
      kindCase_ = 17;
    }
    /**
     * <code>.im.turms.proto.GroupJoinQuestionsWithVersion group_join_questions_with_version = 17;</code>
     */
    private void mergeGroupJoinQuestionsWithVersion(im.turms.client.model.proto.model.group.GroupJoinQuestionsWithVersion value) {
      value.getClass();
  if (kindCase_ == 17 &&
          kind_ != im.turms.client.model.proto.model.group.GroupJoinQuestionsWithVersion.getDefaultInstance()) {
        kind_ = im.turms.client.model.proto.model.group.GroupJoinQuestionsWithVersion.newBuilder((im.turms.client.model.proto.model.group.GroupJoinQuestionsWithVersion) kind_)
            .mergeFrom(value).buildPartial();
      } else {
        kind_ = value;
      }
      kindCase_ = 17;
    }
    /**
     * <code>.im.turms.proto.GroupJoinQuestionsWithVersion group_join_questions_with_version = 17;</code>
     */
    private void clearGroupJoinQuestionsWithVersion() {
      if (kindCase_ == 17) {
        kindCase_ = 0;
        kind_ = null;
      }
    }

    public static final int GROUP_MEMBERS_WITH_VERSION_FIELD_NUMBER = 18;
    /**
     * <code>.im.turms.proto.GroupMembersWithVersion group_members_with_version = 18;</code>
     */
    @java.lang.Override
    public boolean hasGroupMembersWithVersion() {
      return kindCase_ == 18;
    }
    /**
     * <code>.im.turms.proto.GroupMembersWithVersion group_members_with_version = 18;</code>
     */
    @java.lang.Override
    public im.turms.client.model.proto.model.group.GroupMembersWithVersion getGroupMembersWithVersion() {
      if (kindCase_ == 18) {
         return (im.turms.client.model.proto.model.group.GroupMembersWithVersion) kind_;
      }
      return im.turms.client.model.proto.model.group.GroupMembersWithVersion.getDefaultInstance();
    }
    /**
     * <code>.im.turms.proto.GroupMembersWithVersion group_members_with_version = 18;</code>
     */
    private void setGroupMembersWithVersion(im.turms.client.model.proto.model.group.GroupMembersWithVersion value) {
      value.getClass();
  kind_ = value;
      kindCase_ = 18;
    }
    /**
     * <code>.im.turms.proto.GroupMembersWithVersion group_members_with_version = 18;</code>
     */
    private void mergeGroupMembersWithVersion(im.turms.client.model.proto.model.group.GroupMembersWithVersion value) {
      value.getClass();
  if (kindCase_ == 18 &&
          kind_ != im.turms.client.model.proto.model.group.GroupMembersWithVersion.getDefaultInstance()) {
        kind_ = im.turms.client.model.proto.model.group.GroupMembersWithVersion.newBuilder((im.turms.client.model.proto.model.group.GroupMembersWithVersion) kind_)
            .mergeFrom(value).buildPartial();
      } else {
        kind_ = value;
      }
      kindCase_ = 18;
    }
    /**
     * <code>.im.turms.proto.GroupMembersWithVersion group_members_with_version = 18;</code>
     */
    private void clearGroupMembersWithVersion() {
      if (kindCase_ == 18) {
        kindCase_ = 0;
        kind_ = null;
      }
    }

    public static final int GROUPS_WITH_VERSION_FIELD_NUMBER = 19;
    /**
     * <code>.im.turms.proto.GroupsWithVersion groups_with_version = 19;</code>
     */
    @java.lang.Override
    public boolean hasGroupsWithVersion() {
      return kindCase_ == 19;
    }
    /**
     * <code>.im.turms.proto.GroupsWithVersion groups_with_version = 19;</code>
     */
    @java.lang.Override
    public im.turms.client.model.proto.model.group.GroupsWithVersion getGroupsWithVersion() {
      if (kindCase_ == 19) {
         return (im.turms.client.model.proto.model.group.GroupsWithVersion) kind_;
      }
      return im.turms.client.model.proto.model.group.GroupsWithVersion.getDefaultInstance();
    }
    /**
     * <code>.im.turms.proto.GroupsWithVersion groups_with_version = 19;</code>
     */
    private void setGroupsWithVersion(im.turms.client.model.proto.model.group.GroupsWithVersion value) {
      value.getClass();
  kind_ = value;
      kindCase_ = 19;
    }
    /**
     * <code>.im.turms.proto.GroupsWithVersion groups_with_version = 19;</code>
     */
    private void mergeGroupsWithVersion(im.turms.client.model.proto.model.group.GroupsWithVersion value) {
      value.getClass();
  if (kindCase_ == 19 &&
          kind_ != im.turms.client.model.proto.model.group.GroupsWithVersion.getDefaultInstance()) {
        kind_ = im.turms.client.model.proto.model.group.GroupsWithVersion.newBuilder((im.turms.client.model.proto.model.group.GroupsWithVersion) kind_)
            .mergeFrom(value).buildPartial();
      } else {
        kind_ = value;
      }
      kindCase_ = 19;
    }
    /**
     * <code>.im.turms.proto.GroupsWithVersion groups_with_version = 19;</code>
     */
    private void clearGroupsWithVersion() {
      if (kindCase_ == 19) {
        kindCase_ = 0;
        kind_ = null;
      }
    }

    public static im.turms.client.model.proto.notification.TurmsNotification.Data parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.turms.client.model.proto.notification.TurmsNotification.Data parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.turms.client.model.proto.notification.TurmsNotification.Data parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.turms.client.model.proto.notification.TurmsNotification.Data parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.turms.client.model.proto.notification.TurmsNotification.Data parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.turms.client.model.proto.notification.TurmsNotification.Data parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.turms.client.model.proto.notification.TurmsNotification.Data parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.turms.client.model.proto.notification.TurmsNotification.Data parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.turms.client.model.proto.notification.TurmsNotification.Data parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.turms.client.model.proto.notification.TurmsNotification.Data parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.turms.client.model.proto.notification.TurmsNotification.Data parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.turms.client.model.proto.notification.TurmsNotification.Data parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(im.turms.client.model.proto.notification.TurmsNotification.Data prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * Protobuf type {@code im.turms.proto.TurmsNotification.Data}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.turms.client.model.proto.notification.TurmsNotification.Data, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.turms.proto.TurmsNotification.Data)
        im.turms.client.model.proto.notification.TurmsNotification.DataOrBuilder {
      // Construct using im.turms.client.model.proto.notification.TurmsNotification.Data.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public KindCase
          getKindCase() {
        return instance.getKindCase();
      }

      public Builder clearKind() {
        copyOnWrite();
        instance.clearKind();
        return this;
      }


      /**
       * <code>.im.turms.proto.Int64Values ids = 1;</code>
       */
      @java.lang.Override
      public boolean hasIds() {
        return instance.hasIds();
      }
      /**
       * <code>.im.turms.proto.Int64Values ids = 1;</code>
       */
      @java.lang.Override
      public im.turms.client.model.proto.model.common.Int64Values getIds() {
        return instance.getIds();
      }
      /**
       * <code>.im.turms.proto.Int64Values ids = 1;</code>
       */
      public Builder setIds(im.turms.client.model.proto.model.common.Int64Values value) {
        copyOnWrite();
        instance.setIds(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.Int64Values ids = 1;</code>
       */
      public Builder setIds(
          im.turms.client.model.proto.model.common.Int64Values.Builder builderForValue) {
        copyOnWrite();
        instance.setIds(builderForValue.build());
        return this;
      }
      /**
       * <code>.im.turms.proto.Int64Values ids = 1;</code>
       */
      public Builder mergeIds(im.turms.client.model.proto.model.common.Int64Values value) {
        copyOnWrite();
        instance.mergeIds(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.Int64Values ids = 1;</code>
       */
      public Builder clearIds() {
        copyOnWrite();
        instance.clearIds();
        return this;
      }

      /**
       * <code>.im.turms.proto.Int64ValuesWithVersion ids_with_version = 2;</code>
       */
      @java.lang.Override
      public boolean hasIdsWithVersion() {
        return instance.hasIdsWithVersion();
      }
      /**
       * <code>.im.turms.proto.Int64ValuesWithVersion ids_with_version = 2;</code>
       */
      @java.lang.Override
      public im.turms.client.model.proto.model.common.Int64ValuesWithVersion getIdsWithVersion() {
        return instance.getIdsWithVersion();
      }
      /**
       * <code>.im.turms.proto.Int64ValuesWithVersion ids_with_version = 2;</code>
       */
      public Builder setIdsWithVersion(im.turms.client.model.proto.model.common.Int64ValuesWithVersion value) {
        copyOnWrite();
        instance.setIdsWithVersion(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.Int64ValuesWithVersion ids_with_version = 2;</code>
       */
      public Builder setIdsWithVersion(
          im.turms.client.model.proto.model.common.Int64ValuesWithVersion.Builder builderForValue) {
        copyOnWrite();
        instance.setIdsWithVersion(builderForValue.build());
        return this;
      }
      /**
       * <code>.im.turms.proto.Int64ValuesWithVersion ids_with_version = 2;</code>
       */
      public Builder mergeIdsWithVersion(im.turms.client.model.proto.model.common.Int64ValuesWithVersion value) {
        copyOnWrite();
        instance.mergeIdsWithVersion(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.Int64ValuesWithVersion ids_with_version = 2;</code>
       */
      public Builder clearIdsWithVersion() {
        copyOnWrite();
        instance.clearIdsWithVersion();
        return this;
      }

      /**
       * <code>string url = 3;</code>
       * @return Whether the url field is set.
       */
      @java.lang.Override
      public boolean hasUrl() {
        return instance.hasUrl();
      }
      /**
       * <code>string url = 3;</code>
       * @return The url.
       */
      @java.lang.Override
      public java.lang.String getUrl() {
        return instance.getUrl();
      }
      /**
       * <code>string url = 3;</code>
       * @return The bytes for url.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getUrlBytes() {
        return instance.getUrlBytes();
      }
      /**
       * <code>string url = 3;</code>
       * @param value The url to set.
       * @return This builder for chaining.
       */
      public Builder setUrl(
          java.lang.String value) {
        copyOnWrite();
        instance.setUrl(value);
        return this;
      }
      /**
       * <code>string url = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearUrl() {
        copyOnWrite();
        instance.clearUrl();
        return this;
      }
      /**
       * <code>string url = 3;</code>
       * @param value The bytes for url to set.
       * @return This builder for chaining.
       */
      public Builder setUrlBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setUrlBytes(value);
        return this;
      }

      /**
       * <code>.im.turms.proto.Conversations conversations = 4;</code>
       */
      @java.lang.Override
      public boolean hasConversations() {
        return instance.hasConversations();
      }
      /**
       * <code>.im.turms.proto.Conversations conversations = 4;</code>
       */
      @java.lang.Override
      public im.turms.client.model.proto.model.conversation.Conversations getConversations() {
        return instance.getConversations();
      }
      /**
       * <code>.im.turms.proto.Conversations conversations = 4;</code>
       */
      public Builder setConversations(im.turms.client.model.proto.model.conversation.Conversations value) {
        copyOnWrite();
        instance.setConversations(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.Conversations conversations = 4;</code>
       */
      public Builder setConversations(
          im.turms.client.model.proto.model.conversation.Conversations.Builder builderForValue) {
        copyOnWrite();
        instance.setConversations(builderForValue.build());
        return this;
      }
      /**
       * <code>.im.turms.proto.Conversations conversations = 4;</code>
       */
      public Builder mergeConversations(im.turms.client.model.proto.model.conversation.Conversations value) {
        copyOnWrite();
        instance.mergeConversations(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.Conversations conversations = 4;</code>
       */
      public Builder clearConversations() {
        copyOnWrite();
        instance.clearConversations();
        return this;
      }

      /**
       * <code>.im.turms.proto.Messages messages = 5;</code>
       */
      @java.lang.Override
      public boolean hasMessages() {
        return instance.hasMessages();
      }
      /**
       * <code>.im.turms.proto.Messages messages = 5;</code>
       */
      @java.lang.Override
      public im.turms.client.model.proto.model.message.Messages getMessages() {
        return instance.getMessages();
      }
      /**
       * <code>.im.turms.proto.Messages messages = 5;</code>
       */
      public Builder setMessages(im.turms.client.model.proto.model.message.Messages value) {
        copyOnWrite();
        instance.setMessages(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.Messages messages = 5;</code>
       */
      public Builder setMessages(
          im.turms.client.model.proto.model.message.Messages.Builder builderForValue) {
        copyOnWrite();
        instance.setMessages(builderForValue.build());
        return this;
      }
      /**
       * <code>.im.turms.proto.Messages messages = 5;</code>
       */
      public Builder mergeMessages(im.turms.client.model.proto.model.message.Messages value) {
        copyOnWrite();
        instance.mergeMessages(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.Messages messages = 5;</code>
       */
      public Builder clearMessages() {
        copyOnWrite();
        instance.clearMessages();
        return this;
      }

      /**
       * <code>.im.turms.proto.MessagesWithTotalList messages_with_total_list = 6;</code>
       */
      @java.lang.Override
      public boolean hasMessagesWithTotalList() {
        return instance.hasMessagesWithTotalList();
      }
      /**
       * <code>.im.turms.proto.MessagesWithTotalList messages_with_total_list = 6;</code>
       */
      @java.lang.Override
      public im.turms.client.model.proto.model.message.MessagesWithTotalList getMessagesWithTotalList() {
        return instance.getMessagesWithTotalList();
      }
      /**
       * <code>.im.turms.proto.MessagesWithTotalList messages_with_total_list = 6;</code>
       */
      public Builder setMessagesWithTotalList(im.turms.client.model.proto.model.message.MessagesWithTotalList value) {
        copyOnWrite();
        instance.setMessagesWithTotalList(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.MessagesWithTotalList messages_with_total_list = 6;</code>
       */
      public Builder setMessagesWithTotalList(
          im.turms.client.model.proto.model.message.MessagesWithTotalList.Builder builderForValue) {
        copyOnWrite();
        instance.setMessagesWithTotalList(builderForValue.build());
        return this;
      }
      /**
       * <code>.im.turms.proto.MessagesWithTotalList messages_with_total_list = 6;</code>
       */
      public Builder mergeMessagesWithTotalList(im.turms.client.model.proto.model.message.MessagesWithTotalList value) {
        copyOnWrite();
        instance.mergeMessagesWithTotalList(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.MessagesWithTotalList messages_with_total_list = 6;</code>
       */
      public Builder clearMessagesWithTotalList() {
        copyOnWrite();
        instance.clearMessagesWithTotalList();
        return this;
      }

      /**
       * <code>.im.turms.proto.UserSession user_session = 7;</code>
       */
      @java.lang.Override
      public boolean hasUserSession() {
        return instance.hasUserSession();
      }
      /**
       * <code>.im.turms.proto.UserSession user_session = 7;</code>
       */
      @java.lang.Override
      public im.turms.client.model.proto.model.user.UserSession getUserSession() {
        return instance.getUserSession();
      }
      /**
       * <code>.im.turms.proto.UserSession user_session = 7;</code>
       */
      public Builder setUserSession(im.turms.client.model.proto.model.user.UserSession value) {
        copyOnWrite();
        instance.setUserSession(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.UserSession user_session = 7;</code>
       */
      public Builder setUserSession(
          im.turms.client.model.proto.model.user.UserSession.Builder builderForValue) {
        copyOnWrite();
        instance.setUserSession(builderForValue.build());
        return this;
      }
      /**
       * <code>.im.turms.proto.UserSession user_session = 7;</code>
       */
      public Builder mergeUserSession(im.turms.client.model.proto.model.user.UserSession value) {
        copyOnWrite();
        instance.mergeUserSession(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.UserSession user_session = 7;</code>
       */
      public Builder clearUserSession() {
        copyOnWrite();
        instance.clearUserSession();
        return this;
      }

      /**
       * <code>.im.turms.proto.UsersInfosWithVersion users_infos_with_version = 8;</code>
       */
      @java.lang.Override
      public boolean hasUsersInfosWithVersion() {
        return instance.hasUsersInfosWithVersion();
      }
      /**
       * <code>.im.turms.proto.UsersInfosWithVersion users_infos_with_version = 8;</code>
       */
      @java.lang.Override
      public im.turms.client.model.proto.model.user.UsersInfosWithVersion getUsersInfosWithVersion() {
        return instance.getUsersInfosWithVersion();
      }
      /**
       * <code>.im.turms.proto.UsersInfosWithVersion users_infos_with_version = 8;</code>
       */
      public Builder setUsersInfosWithVersion(im.turms.client.model.proto.model.user.UsersInfosWithVersion value) {
        copyOnWrite();
        instance.setUsersInfosWithVersion(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.UsersInfosWithVersion users_infos_with_version = 8;</code>
       */
      public Builder setUsersInfosWithVersion(
          im.turms.client.model.proto.model.user.UsersInfosWithVersion.Builder builderForValue) {
        copyOnWrite();
        instance.setUsersInfosWithVersion(builderForValue.build());
        return this;
      }
      /**
       * <code>.im.turms.proto.UsersInfosWithVersion users_infos_with_version = 8;</code>
       */
      public Builder mergeUsersInfosWithVersion(im.turms.client.model.proto.model.user.UsersInfosWithVersion value) {
        copyOnWrite();
        instance.mergeUsersInfosWithVersion(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.UsersInfosWithVersion users_infos_with_version = 8;</code>
       */
      public Builder clearUsersInfosWithVersion() {
        copyOnWrite();
        instance.clearUsersInfosWithVersion();
        return this;
      }

      /**
       * <code>.im.turms.proto.UsersOnlineStatuses users_online_statuses = 9;</code>
       */
      @java.lang.Override
      public boolean hasUsersOnlineStatuses() {
        return instance.hasUsersOnlineStatuses();
      }
      /**
       * <code>.im.turms.proto.UsersOnlineStatuses users_online_statuses = 9;</code>
       */
      @java.lang.Override
      public im.turms.client.model.proto.model.user.UsersOnlineStatuses getUsersOnlineStatuses() {
        return instance.getUsersOnlineStatuses();
      }
      /**
       * <code>.im.turms.proto.UsersOnlineStatuses users_online_statuses = 9;</code>
       */
      public Builder setUsersOnlineStatuses(im.turms.client.model.proto.model.user.UsersOnlineStatuses value) {
        copyOnWrite();
        instance.setUsersOnlineStatuses(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.UsersOnlineStatuses users_online_statuses = 9;</code>
       */
      public Builder setUsersOnlineStatuses(
          im.turms.client.model.proto.model.user.UsersOnlineStatuses.Builder builderForValue) {
        copyOnWrite();
        instance.setUsersOnlineStatuses(builderForValue.build());
        return this;
      }
      /**
       * <code>.im.turms.proto.UsersOnlineStatuses users_online_statuses = 9;</code>
       */
      public Builder mergeUsersOnlineStatuses(im.turms.client.model.proto.model.user.UsersOnlineStatuses value) {
        copyOnWrite();
        instance.mergeUsersOnlineStatuses(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.UsersOnlineStatuses users_online_statuses = 9;</code>
       */
      public Builder clearUsersOnlineStatuses() {
        copyOnWrite();
        instance.clearUsersOnlineStatuses();
        return this;
      }

      /**
       * <code>.im.turms.proto.UserFriendRequestsWithVersion user_friend_requests_with_version = 10;</code>
       */
      @java.lang.Override
      public boolean hasUserFriendRequestsWithVersion() {
        return instance.hasUserFriendRequestsWithVersion();
      }
      /**
       * <code>.im.turms.proto.UserFriendRequestsWithVersion user_friend_requests_with_version = 10;</code>
       */
      @java.lang.Override
      public im.turms.client.model.proto.model.user.UserFriendRequestsWithVersion getUserFriendRequestsWithVersion() {
        return instance.getUserFriendRequestsWithVersion();
      }
      /**
       * <code>.im.turms.proto.UserFriendRequestsWithVersion user_friend_requests_with_version = 10;</code>
       */
      public Builder setUserFriendRequestsWithVersion(im.turms.client.model.proto.model.user.UserFriendRequestsWithVersion value) {
        copyOnWrite();
        instance.setUserFriendRequestsWithVersion(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.UserFriendRequestsWithVersion user_friend_requests_with_version = 10;</code>
       */
      public Builder setUserFriendRequestsWithVersion(
          im.turms.client.model.proto.model.user.UserFriendRequestsWithVersion.Builder builderForValue) {
        copyOnWrite();
        instance.setUserFriendRequestsWithVersion(builderForValue.build());
        return this;
      }
      /**
       * <code>.im.turms.proto.UserFriendRequestsWithVersion user_friend_requests_with_version = 10;</code>
       */
      public Builder mergeUserFriendRequestsWithVersion(im.turms.client.model.proto.model.user.UserFriendRequestsWithVersion value) {
        copyOnWrite();
        instance.mergeUserFriendRequestsWithVersion(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.UserFriendRequestsWithVersion user_friend_requests_with_version = 10;</code>
       */
      public Builder clearUserFriendRequestsWithVersion() {
        copyOnWrite();
        instance.clearUserFriendRequestsWithVersion();
        return this;
      }

      /**
       * <code>.im.turms.proto.UserRelationshipGroupsWithVersion user_relationship_groups_with_version = 11;</code>
       */
      @java.lang.Override
      public boolean hasUserRelationshipGroupsWithVersion() {
        return instance.hasUserRelationshipGroupsWithVersion();
      }
      /**
       * <code>.im.turms.proto.UserRelationshipGroupsWithVersion user_relationship_groups_with_version = 11;</code>
       */
      @java.lang.Override
      public im.turms.client.model.proto.model.user.UserRelationshipGroupsWithVersion getUserRelationshipGroupsWithVersion() {
        return instance.getUserRelationshipGroupsWithVersion();
      }
      /**
       * <code>.im.turms.proto.UserRelationshipGroupsWithVersion user_relationship_groups_with_version = 11;</code>
       */
      public Builder setUserRelationshipGroupsWithVersion(im.turms.client.model.proto.model.user.UserRelationshipGroupsWithVersion value) {
        copyOnWrite();
        instance.setUserRelationshipGroupsWithVersion(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.UserRelationshipGroupsWithVersion user_relationship_groups_with_version = 11;</code>
       */
      public Builder setUserRelationshipGroupsWithVersion(
          im.turms.client.model.proto.model.user.UserRelationshipGroupsWithVersion.Builder builderForValue) {
        copyOnWrite();
        instance.setUserRelationshipGroupsWithVersion(builderForValue.build());
        return this;
      }
      /**
       * <code>.im.turms.proto.UserRelationshipGroupsWithVersion user_relationship_groups_with_version = 11;</code>
       */
      public Builder mergeUserRelationshipGroupsWithVersion(im.turms.client.model.proto.model.user.UserRelationshipGroupsWithVersion value) {
        copyOnWrite();
        instance.mergeUserRelationshipGroupsWithVersion(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.UserRelationshipGroupsWithVersion user_relationship_groups_with_version = 11;</code>
       */
      public Builder clearUserRelationshipGroupsWithVersion() {
        copyOnWrite();
        instance.clearUserRelationshipGroupsWithVersion();
        return this;
      }

      /**
       * <code>.im.turms.proto.UserRelationshipsWithVersion user_relationships_with_version = 12;</code>
       */
      @java.lang.Override
      public boolean hasUserRelationshipsWithVersion() {
        return instance.hasUserRelationshipsWithVersion();
      }
      /**
       * <code>.im.turms.proto.UserRelationshipsWithVersion user_relationships_with_version = 12;</code>
       */
      @java.lang.Override
      public im.turms.client.model.proto.model.user.UserRelationshipsWithVersion getUserRelationshipsWithVersion() {
        return instance.getUserRelationshipsWithVersion();
      }
      /**
       * <code>.im.turms.proto.UserRelationshipsWithVersion user_relationships_with_version = 12;</code>
       */
      public Builder setUserRelationshipsWithVersion(im.turms.client.model.proto.model.user.UserRelationshipsWithVersion value) {
        copyOnWrite();
        instance.setUserRelationshipsWithVersion(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.UserRelationshipsWithVersion user_relationships_with_version = 12;</code>
       */
      public Builder setUserRelationshipsWithVersion(
          im.turms.client.model.proto.model.user.UserRelationshipsWithVersion.Builder builderForValue) {
        copyOnWrite();
        instance.setUserRelationshipsWithVersion(builderForValue.build());
        return this;
      }
      /**
       * <code>.im.turms.proto.UserRelationshipsWithVersion user_relationships_with_version = 12;</code>
       */
      public Builder mergeUserRelationshipsWithVersion(im.turms.client.model.proto.model.user.UserRelationshipsWithVersion value) {
        copyOnWrite();
        instance.mergeUserRelationshipsWithVersion(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.UserRelationshipsWithVersion user_relationships_with_version = 12;</code>
       */
      public Builder clearUserRelationshipsWithVersion() {
        copyOnWrite();
        instance.clearUserRelationshipsWithVersion();
        return this;
      }

      /**
       * <code>.im.turms.proto.NearbyUsers nearby_users = 13;</code>
       */
      @java.lang.Override
      public boolean hasNearbyUsers() {
        return instance.hasNearbyUsers();
      }
      /**
       * <code>.im.turms.proto.NearbyUsers nearby_users = 13;</code>
       */
      @java.lang.Override
      public im.turms.client.model.proto.model.user.NearbyUsers getNearbyUsers() {
        return instance.getNearbyUsers();
      }
      /**
       * <code>.im.turms.proto.NearbyUsers nearby_users = 13;</code>
       */
      public Builder setNearbyUsers(im.turms.client.model.proto.model.user.NearbyUsers value) {
        copyOnWrite();
        instance.setNearbyUsers(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.NearbyUsers nearby_users = 13;</code>
       */
      public Builder setNearbyUsers(
          im.turms.client.model.proto.model.user.NearbyUsers.Builder builderForValue) {
        copyOnWrite();
        instance.setNearbyUsers(builderForValue.build());
        return this;
      }
      /**
       * <code>.im.turms.proto.NearbyUsers nearby_users = 13;</code>
       */
      public Builder mergeNearbyUsers(im.turms.client.model.proto.model.user.NearbyUsers value) {
        copyOnWrite();
        instance.mergeNearbyUsers(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.NearbyUsers nearby_users = 13;</code>
       */
      public Builder clearNearbyUsers() {
        copyOnWrite();
        instance.clearNearbyUsers();
        return this;
      }

      /**
       * <code>.im.turms.proto.GroupInvitationsWithVersion group_invitations_with_version = 14;</code>
       */
      @java.lang.Override
      public boolean hasGroupInvitationsWithVersion() {
        return instance.hasGroupInvitationsWithVersion();
      }
      /**
       * <code>.im.turms.proto.GroupInvitationsWithVersion group_invitations_with_version = 14;</code>
       */
      @java.lang.Override
      public im.turms.client.model.proto.model.group.GroupInvitationsWithVersion getGroupInvitationsWithVersion() {
        return instance.getGroupInvitationsWithVersion();
      }
      /**
       * <code>.im.turms.proto.GroupInvitationsWithVersion group_invitations_with_version = 14;</code>
       */
      public Builder setGroupInvitationsWithVersion(im.turms.client.model.proto.model.group.GroupInvitationsWithVersion value) {
        copyOnWrite();
        instance.setGroupInvitationsWithVersion(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.GroupInvitationsWithVersion group_invitations_with_version = 14;</code>
       */
      public Builder setGroupInvitationsWithVersion(
          im.turms.client.model.proto.model.group.GroupInvitationsWithVersion.Builder builderForValue) {
        copyOnWrite();
        instance.setGroupInvitationsWithVersion(builderForValue.build());
        return this;
      }
      /**
       * <code>.im.turms.proto.GroupInvitationsWithVersion group_invitations_with_version = 14;</code>
       */
      public Builder mergeGroupInvitationsWithVersion(im.turms.client.model.proto.model.group.GroupInvitationsWithVersion value) {
        copyOnWrite();
        instance.mergeGroupInvitationsWithVersion(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.GroupInvitationsWithVersion group_invitations_with_version = 14;</code>
       */
      public Builder clearGroupInvitationsWithVersion() {
        copyOnWrite();
        instance.clearGroupInvitationsWithVersion();
        return this;
      }

      /**
       * <code>.im.turms.proto.GroupJoinQuestionsAnswerResult group_join_question_answer_result = 15;</code>
       */
      @java.lang.Override
      public boolean hasGroupJoinQuestionAnswerResult() {
        return instance.hasGroupJoinQuestionAnswerResult();
      }
      /**
       * <code>.im.turms.proto.GroupJoinQuestionsAnswerResult group_join_question_answer_result = 15;</code>
       */
      @java.lang.Override
      public im.turms.client.model.proto.model.group.GroupJoinQuestionsAnswerResult getGroupJoinQuestionAnswerResult() {
        return instance.getGroupJoinQuestionAnswerResult();
      }
      /**
       * <code>.im.turms.proto.GroupJoinQuestionsAnswerResult group_join_question_answer_result = 15;</code>
       */
      public Builder setGroupJoinQuestionAnswerResult(im.turms.client.model.proto.model.group.GroupJoinQuestionsAnswerResult value) {
        copyOnWrite();
        instance.setGroupJoinQuestionAnswerResult(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.GroupJoinQuestionsAnswerResult group_join_question_answer_result = 15;</code>
       */
      public Builder setGroupJoinQuestionAnswerResult(
          im.turms.client.model.proto.model.group.GroupJoinQuestionsAnswerResult.Builder builderForValue) {
        copyOnWrite();
        instance.setGroupJoinQuestionAnswerResult(builderForValue.build());
        return this;
      }
      /**
       * <code>.im.turms.proto.GroupJoinQuestionsAnswerResult group_join_question_answer_result = 15;</code>
       */
      public Builder mergeGroupJoinQuestionAnswerResult(im.turms.client.model.proto.model.group.GroupJoinQuestionsAnswerResult value) {
        copyOnWrite();
        instance.mergeGroupJoinQuestionAnswerResult(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.GroupJoinQuestionsAnswerResult group_join_question_answer_result = 15;</code>
       */
      public Builder clearGroupJoinQuestionAnswerResult() {
        copyOnWrite();
        instance.clearGroupJoinQuestionAnswerResult();
        return this;
      }

      /**
       * <code>.im.turms.proto.GroupJoinRequestsWithVersion group_join_requests_with_version = 16;</code>
       */
      @java.lang.Override
      public boolean hasGroupJoinRequestsWithVersion() {
        return instance.hasGroupJoinRequestsWithVersion();
      }
      /**
       * <code>.im.turms.proto.GroupJoinRequestsWithVersion group_join_requests_with_version = 16;</code>
       */
      @java.lang.Override
      public im.turms.client.model.proto.model.group.GroupJoinRequestsWithVersion getGroupJoinRequestsWithVersion() {
        return instance.getGroupJoinRequestsWithVersion();
      }
      /**
       * <code>.im.turms.proto.GroupJoinRequestsWithVersion group_join_requests_with_version = 16;</code>
       */
      public Builder setGroupJoinRequestsWithVersion(im.turms.client.model.proto.model.group.GroupJoinRequestsWithVersion value) {
        copyOnWrite();
        instance.setGroupJoinRequestsWithVersion(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.GroupJoinRequestsWithVersion group_join_requests_with_version = 16;</code>
       */
      public Builder setGroupJoinRequestsWithVersion(
          im.turms.client.model.proto.model.group.GroupJoinRequestsWithVersion.Builder builderForValue) {
        copyOnWrite();
        instance.setGroupJoinRequestsWithVersion(builderForValue.build());
        return this;
      }
      /**
       * <code>.im.turms.proto.GroupJoinRequestsWithVersion group_join_requests_with_version = 16;</code>
       */
      public Builder mergeGroupJoinRequestsWithVersion(im.turms.client.model.proto.model.group.GroupJoinRequestsWithVersion value) {
        copyOnWrite();
        instance.mergeGroupJoinRequestsWithVersion(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.GroupJoinRequestsWithVersion group_join_requests_with_version = 16;</code>
       */
      public Builder clearGroupJoinRequestsWithVersion() {
        copyOnWrite();
        instance.clearGroupJoinRequestsWithVersion();
        return this;
      }

      /**
       * <code>.im.turms.proto.GroupJoinQuestionsWithVersion group_join_questions_with_version = 17;</code>
       */
      @java.lang.Override
      public boolean hasGroupJoinQuestionsWithVersion() {
        return instance.hasGroupJoinQuestionsWithVersion();
      }
      /**
       * <code>.im.turms.proto.GroupJoinQuestionsWithVersion group_join_questions_with_version = 17;</code>
       */
      @java.lang.Override
      public im.turms.client.model.proto.model.group.GroupJoinQuestionsWithVersion getGroupJoinQuestionsWithVersion() {
        return instance.getGroupJoinQuestionsWithVersion();
      }
      /**
       * <code>.im.turms.proto.GroupJoinQuestionsWithVersion group_join_questions_with_version = 17;</code>
       */
      public Builder setGroupJoinQuestionsWithVersion(im.turms.client.model.proto.model.group.GroupJoinQuestionsWithVersion value) {
        copyOnWrite();
        instance.setGroupJoinQuestionsWithVersion(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.GroupJoinQuestionsWithVersion group_join_questions_with_version = 17;</code>
       */
      public Builder setGroupJoinQuestionsWithVersion(
          im.turms.client.model.proto.model.group.GroupJoinQuestionsWithVersion.Builder builderForValue) {
        copyOnWrite();
        instance.setGroupJoinQuestionsWithVersion(builderForValue.build());
        return this;
      }
      /**
       * <code>.im.turms.proto.GroupJoinQuestionsWithVersion group_join_questions_with_version = 17;</code>
       */
      public Builder mergeGroupJoinQuestionsWithVersion(im.turms.client.model.proto.model.group.GroupJoinQuestionsWithVersion value) {
        copyOnWrite();
        instance.mergeGroupJoinQuestionsWithVersion(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.GroupJoinQuestionsWithVersion group_join_questions_with_version = 17;</code>
       */
      public Builder clearGroupJoinQuestionsWithVersion() {
        copyOnWrite();
        instance.clearGroupJoinQuestionsWithVersion();
        return this;
      }

      /**
       * <code>.im.turms.proto.GroupMembersWithVersion group_members_with_version = 18;</code>
       */
      @java.lang.Override
      public boolean hasGroupMembersWithVersion() {
        return instance.hasGroupMembersWithVersion();
      }
      /**
       * <code>.im.turms.proto.GroupMembersWithVersion group_members_with_version = 18;</code>
       */
      @java.lang.Override
      public im.turms.client.model.proto.model.group.GroupMembersWithVersion getGroupMembersWithVersion() {
        return instance.getGroupMembersWithVersion();
      }
      /**
       * <code>.im.turms.proto.GroupMembersWithVersion group_members_with_version = 18;</code>
       */
      public Builder setGroupMembersWithVersion(im.turms.client.model.proto.model.group.GroupMembersWithVersion value) {
        copyOnWrite();
        instance.setGroupMembersWithVersion(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.GroupMembersWithVersion group_members_with_version = 18;</code>
       */
      public Builder setGroupMembersWithVersion(
          im.turms.client.model.proto.model.group.GroupMembersWithVersion.Builder builderForValue) {
        copyOnWrite();
        instance.setGroupMembersWithVersion(builderForValue.build());
        return this;
      }
      /**
       * <code>.im.turms.proto.GroupMembersWithVersion group_members_with_version = 18;</code>
       */
      public Builder mergeGroupMembersWithVersion(im.turms.client.model.proto.model.group.GroupMembersWithVersion value) {
        copyOnWrite();
        instance.mergeGroupMembersWithVersion(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.GroupMembersWithVersion group_members_with_version = 18;</code>
       */
      public Builder clearGroupMembersWithVersion() {
        copyOnWrite();
        instance.clearGroupMembersWithVersion();
        return this;
      }

      /**
       * <code>.im.turms.proto.GroupsWithVersion groups_with_version = 19;</code>
       */
      @java.lang.Override
      public boolean hasGroupsWithVersion() {
        return instance.hasGroupsWithVersion();
      }
      /**
       * <code>.im.turms.proto.GroupsWithVersion groups_with_version = 19;</code>
       */
      @java.lang.Override
      public im.turms.client.model.proto.model.group.GroupsWithVersion getGroupsWithVersion() {
        return instance.getGroupsWithVersion();
      }
      /**
       * <code>.im.turms.proto.GroupsWithVersion groups_with_version = 19;</code>
       */
      public Builder setGroupsWithVersion(im.turms.client.model.proto.model.group.GroupsWithVersion value) {
        copyOnWrite();
        instance.setGroupsWithVersion(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.GroupsWithVersion groups_with_version = 19;</code>
       */
      public Builder setGroupsWithVersion(
          im.turms.client.model.proto.model.group.GroupsWithVersion.Builder builderForValue) {
        copyOnWrite();
        instance.setGroupsWithVersion(builderForValue.build());
        return this;
      }
      /**
       * <code>.im.turms.proto.GroupsWithVersion groups_with_version = 19;</code>
       */
      public Builder mergeGroupsWithVersion(im.turms.client.model.proto.model.group.GroupsWithVersion value) {
        copyOnWrite();
        instance.mergeGroupsWithVersion(value);
        return this;
      }
      /**
       * <code>.im.turms.proto.GroupsWithVersion groups_with_version = 19;</code>
       */
      public Builder clearGroupsWithVersion() {
        copyOnWrite();
        instance.clearGroupsWithVersion();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.turms.proto.TurmsNotification.Data)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.turms.client.model.proto.notification.TurmsNotification.Data();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "kind_",
              "kindCase_",
              im.turms.client.model.proto.model.common.Int64Values.class,
              im.turms.client.model.proto.model.common.Int64ValuesWithVersion.class,
              im.turms.client.model.proto.model.conversation.Conversations.class,
              im.turms.client.model.proto.model.message.Messages.class,
              im.turms.client.model.proto.model.message.MessagesWithTotalList.class,
              im.turms.client.model.proto.model.user.UserSession.class,
              im.turms.client.model.proto.model.user.UsersInfosWithVersion.class,
              im.turms.client.model.proto.model.user.UsersOnlineStatuses.class,
              im.turms.client.model.proto.model.user.UserFriendRequestsWithVersion.class,
              im.turms.client.model.proto.model.user.UserRelationshipGroupsWithVersion.class,
              im.turms.client.model.proto.model.user.UserRelationshipsWithVersion.class,
              im.turms.client.model.proto.model.user.NearbyUsers.class,
              im.turms.client.model.proto.model.group.GroupInvitationsWithVersion.class,
              im.turms.client.model.proto.model.group.GroupJoinQuestionsAnswerResult.class,
              im.turms.client.model.proto.model.group.GroupJoinRequestsWithVersion.class,
              im.turms.client.model.proto.model.group.GroupJoinQuestionsWithVersion.class,
              im.turms.client.model.proto.model.group.GroupMembersWithVersion.class,
              im.turms.client.model.proto.model.group.GroupsWithVersion.class,
            };
            java.lang.String info =
                "\u0000\u0013\u0001\u0000\u0001\u0013\u0013\u0000\u0000\u0000\u0001<\u0000\u0002<" +
                "\u0000\u0003\u023b\u0000\u0004<\u0000\u0005<\u0000\u0006<\u0000\u0007<\u0000\b<\u0000" +
                "\t<\u0000\n<\u0000\u000b<\u0000\f<\u0000\r<\u0000\u000e<\u0000\u000f<\u0000\u0010" +
                "<\u0000\u0011<\u0000\u0012<\u0000\u0013<\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<im.turms.client.model.proto.notification.TurmsNotification.Data> parser = PARSER;
          if (parser == null) {
            synchronized (im.turms.client.model.proto.notification.TurmsNotification.Data.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<im.turms.client.model.proto.notification.TurmsNotification.Data>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.turms.proto.TurmsNotification.Data)
    private static final im.turms.client.model.proto.notification.TurmsNotification.Data DEFAULT_INSTANCE;
    static {
      Data defaultInstance = new Data();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        Data.class, defaultInstance);
    }

    public static im.turms.client.model.proto.notification.TurmsNotification.Data getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<Data> PARSER;

    public static com.google.protobuf.Parser<Data> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  private int bitField0_;
  public static final int REQUEST_ID_FIELD_NUMBER = 1;
  private long requestId_;
  /**
   * <pre>
   * Response
   * request_id is used to tell the client that this notification is for the specific request
   * </pre>
   *
   * <code>optional int64 request_id = 1;</code>
   * @return Whether the requestId field is set.
   */
  @java.lang.Override
  public boolean hasRequestId() {
    return ((bitField0_ & 0x00000001) != 0);
  }
  /**
   * <pre>
   * Response
   * request_id is used to tell the client that this notification is for the specific request
   * </pre>
   *
   * <code>optional int64 request_id = 1;</code>
   * @return The requestId.
   */
  @java.lang.Override
  public long getRequestId() {
    return requestId_;
  }
  /**
   * <pre>
   * Response
   * request_id is used to tell the client that this notification is for the specific request
   * </pre>
   *
   * <code>optional int64 request_id = 1;</code>
   * @param value The requestId to set.
   */
  private void setRequestId(long value) {
    bitField0_ |= 0x00000001;
    requestId_ = value;
  }
  /**
   * <pre>
   * Response
   * request_id is used to tell the client that this notification is for the specific request
   * </pre>
   *
   * <code>optional int64 request_id = 1;</code>
   */
  private void clearRequestId() {
    bitField0_ = (bitField0_ & ~0x00000001);
    requestId_ = 0L;
  }

  public static final int CODE_FIELD_NUMBER = 2;
  private int code_;
  /**
   * <code>optional int32 code = 2;</code>
   * @return Whether the code field is set.
   */
  @java.lang.Override
  public boolean hasCode() {
    return ((bitField0_ & 0x00000002) != 0);
  }
  /**
   * <code>optional int32 code = 2;</code>
   * @return The code.
   */
  @java.lang.Override
  public int getCode() {
    return code_;
  }
  /**
   * <code>optional int32 code = 2;</code>
   * @param value The code to set.
   */
  private void setCode(int value) {
    bitField0_ |= 0x00000002;
    code_ = value;
  }
  /**
   * <code>optional int32 code = 2;</code>
   */
  private void clearCode() {
    bitField0_ = (bitField0_ & ~0x00000002);
    code_ = 0;
  }

  public static final int REASON_FIELD_NUMBER = 3;
  private java.lang.String reason_;
  /**
   * <code>optional string reason = 3;</code>
   * @return Whether the reason field is set.
   */
  @java.lang.Override
  public boolean hasReason() {
    return ((bitField0_ & 0x00000004) != 0);
  }
  /**
   * <code>optional string reason = 3;</code>
   * @return The reason.
   */
  @java.lang.Override
  public java.lang.String getReason() {
    return reason_;
  }
  /**
   * <code>optional string reason = 3;</code>
   * @return The bytes for reason.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString
      getReasonBytes() {
    return com.google.protobuf.ByteString.copyFromUtf8(reason_);
  }
  /**
   * <code>optional string reason = 3;</code>
   * @param value The reason to set.
   */
  private void setReason(
      java.lang.String value) {
    java.lang.Class<?> valueClass = value.getClass();
  bitField0_ |= 0x00000004;
    reason_ = value;
  }
  /**
   * <code>optional string reason = 3;</code>
   */
  private void clearReason() {
    bitField0_ = (bitField0_ & ~0x00000004);
    reason_ = getDefaultInstance().getReason();
  }
  /**
   * <code>optional string reason = 3;</code>
   * @param value The bytes for reason to set.
   */
  private void setReasonBytes(
      com.google.protobuf.ByteString value) {
    checkByteStringIsUtf8(value);
    reason_ = value.toStringUtf8();
    bitField0_ |= 0x00000004;
  }

  public static final int DATA_FIELD_NUMBER = 4;
  private im.turms.client.model.proto.notification.TurmsNotification.Data data_;
  /**
   * <code>.im.turms.proto.TurmsNotification.Data data = 4;</code>
   */
  @java.lang.Override
  public boolean hasData() {
    return data_ != null;
  }
  /**
   * <code>.im.turms.proto.TurmsNotification.Data data = 4;</code>
   */
  @java.lang.Override
  public im.turms.client.model.proto.notification.TurmsNotification.Data getData() {
    return data_ == null ? im.turms.client.model.proto.notification.TurmsNotification.Data.getDefaultInstance() : data_;
  }
  /**
   * <code>.im.turms.proto.TurmsNotification.Data data = 4;</code>
   */
  private void setData(im.turms.client.model.proto.notification.TurmsNotification.Data value) {
    value.getClass();
  data_ = value;
    
    }
  /**
   * <code>.im.turms.proto.TurmsNotification.Data data = 4;</code>
   */
  @java.lang.SuppressWarnings({"ReferenceEquality"})
  private void mergeData(im.turms.client.model.proto.notification.TurmsNotification.Data value) {
    value.getClass();
  if (data_ != null &&
        data_ != im.turms.client.model.proto.notification.TurmsNotification.Data.getDefaultInstance()) {
      data_ =
        im.turms.client.model.proto.notification.TurmsNotification.Data.newBuilder(data_).mergeFrom(value).buildPartial();
    } else {
      data_ = value;
    }
    
  }
  /**
   * <code>.im.turms.proto.TurmsNotification.Data data = 4;</code>
   */
  private void clearData() {  data_ = null;
    
  }

  public static final int REQUESTER_ID_FIELD_NUMBER = 5;
  private long requesterId_;
  /**
   * <pre>
   * Notification
   * requester_id only exists when a requester triggers a notification to its recipients
   * Note: Do not move requester_id to TurmsRequest because it requires rebuilding
   * a new TurmsNotification when recipients need the requester_id.
   * </pre>
   *
   * <code>optional int64 requester_id = 5;</code>
   * @return Whether the requesterId field is set.
   */
  @java.lang.Override
  public boolean hasRequesterId() {
    return ((bitField0_ & 0x00000008) != 0);
  }
  /**
   * <pre>
   * Notification
   * requester_id only exists when a requester triggers a notification to its recipients
   * Note: Do not move requester_id to TurmsRequest because it requires rebuilding
   * a new TurmsNotification when recipients need the requester_id.
   * </pre>
   *
   * <code>optional int64 requester_id = 5;</code>
   * @return The requesterId.
   */
  @java.lang.Override
  public long getRequesterId() {
    return requesterId_;
  }
  /**
   * <pre>
   * Notification
   * requester_id only exists when a requester triggers a notification to its recipients
   * Note: Do not move requester_id to TurmsRequest because it requires rebuilding
   * a new TurmsNotification when recipients need the requester_id.
   * </pre>
   *
   * <code>optional int64 requester_id = 5;</code>
   * @param value The requesterId to set.
   */
  private void setRequesterId(long value) {
    bitField0_ |= 0x00000008;
    requesterId_ = value;
  }
  /**
   * <pre>
   * Notification
   * requester_id only exists when a requester triggers a notification to its recipients
   * Note: Do not move requester_id to TurmsRequest because it requires rebuilding
   * a new TurmsNotification when recipients need the requester_id.
   * </pre>
   *
   * <code>optional int64 requester_id = 5;</code>
   */
  private void clearRequesterId() {
    bitField0_ = (bitField0_ & ~0x00000008);
    requesterId_ = 0L;
  }

  public static final int CLOSE_STATUS_FIELD_NUMBER = 6;
  private int closeStatus_;
  /**
   * <code>optional int32 close_status = 6;</code>
   * @return Whether the closeStatus field is set.
   */
  @java.lang.Override
  public boolean hasCloseStatus() {
    return ((bitField0_ & 0x00000010) != 0);
  }
  /**
   * <code>optional int32 close_status = 6;</code>
   * @return The closeStatus.
   */
  @java.lang.Override
  public int getCloseStatus() {
    return closeStatus_;
  }
  /**
   * <code>optional int32 close_status = 6;</code>
   * @param value The closeStatus to set.
   */
  private void setCloseStatus(int value) {
    bitField0_ |= 0x00000010;
    closeStatus_ = value;
  }
  /**
   * <code>optional int32 close_status = 6;</code>
   */
  private void clearCloseStatus() {
    bitField0_ = (bitField0_ & ~0x00000010);
    closeStatus_ = 0;
  }

  public static final int RELAYED_REQUEST_FIELD_NUMBER = 7;
  private im.turms.client.model.proto.request.TurmsRequest relayedRequest_;
  /**
   * <code>.im.turms.proto.TurmsRequest relayed_request = 7;</code>
   */
  @java.lang.Override
  public boolean hasRelayedRequest() {
    return relayedRequest_ != null;
  }
  /**
   * <code>.im.turms.proto.TurmsRequest relayed_request = 7;</code>
   */
  @java.lang.Override
  public im.turms.client.model.proto.request.TurmsRequest getRelayedRequest() {
    return relayedRequest_ == null ? im.turms.client.model.proto.request.TurmsRequest.getDefaultInstance() : relayedRequest_;
  }
  /**
   * <code>.im.turms.proto.TurmsRequest relayed_request = 7;</code>
   */
  private void setRelayedRequest(im.turms.client.model.proto.request.TurmsRequest value) {
    value.getClass();
  relayedRequest_ = value;
    
    }
  /**
   * <code>.im.turms.proto.TurmsRequest relayed_request = 7;</code>
   */
  @java.lang.SuppressWarnings({"ReferenceEquality"})
  private void mergeRelayedRequest(im.turms.client.model.proto.request.TurmsRequest value) {
    value.getClass();
  if (relayedRequest_ != null &&
        relayedRequest_ != im.turms.client.model.proto.request.TurmsRequest.getDefaultInstance()) {
      relayedRequest_ =
        im.turms.client.model.proto.request.TurmsRequest.newBuilder(relayedRequest_).mergeFrom(value).buildPartial();
    } else {
      relayedRequest_ = value;
    }
    
  }
  /**
   * <code>.im.turms.proto.TurmsRequest relayed_request = 7;</code>
   */
  private void clearRelayedRequest() {  relayedRequest_ = null;
    
  }

  public static im.turms.client.model.proto.notification.TurmsNotification parseFrom(
      java.nio.ByteBuffer data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return com.google.protobuf.GeneratedMessageLite.parseFrom(
        DEFAULT_INSTANCE, data);
  }
  public static im.turms.client.model.proto.notification.TurmsNotification parseFrom(
      java.nio.ByteBuffer data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return com.google.protobuf.GeneratedMessageLite.parseFrom(
        DEFAULT_INSTANCE, data, extensionRegistry);
  }
  public static im.turms.client.model.proto.notification.TurmsNotification parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return com.google.protobuf.GeneratedMessageLite.parseFrom(
        DEFAULT_INSTANCE, data);
  }
  public static im.turms.client.model.proto.notification.TurmsNotification parseFrom(
      com.google.protobuf.ByteString data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return com.google.protobuf.GeneratedMessageLite.parseFrom(
        DEFAULT_INSTANCE, data, extensionRegistry);
  }
  public static im.turms.client.model.proto.notification.TurmsNotification parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return com.google.protobuf.GeneratedMessageLite.parseFrom(
        DEFAULT_INSTANCE, data);
  }
  public static im.turms.client.model.proto.notification.TurmsNotification parseFrom(
      byte[] data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return com.google.protobuf.GeneratedMessageLite.parseFrom(
        DEFAULT_INSTANCE, data, extensionRegistry);
  }
  public static im.turms.client.model.proto.notification.TurmsNotification parseFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageLite.parseFrom(
        DEFAULT_INSTANCE, input);
  }
  public static im.turms.client.model.proto.notification.TurmsNotification parseFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageLite.parseFrom(
        DEFAULT_INSTANCE, input, extensionRegistry);
  }
  public static im.turms.client.model.proto.notification.TurmsNotification parseDelimitedFrom(java.io.InputStream input)
      throws java.io.IOException {
    return parseDelimitedFrom(DEFAULT_INSTANCE, input);
  }
  public static im.turms.client.model.proto.notification.TurmsNotification parseDelimitedFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
  }
  public static im.turms.client.model.proto.notification.TurmsNotification parseFrom(
      com.google.protobuf.CodedInputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageLite.parseFrom(
        DEFAULT_INSTANCE, input);
  }
  public static im.turms.client.model.proto.notification.TurmsNotification parseFrom(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageLite.parseFrom(
        DEFAULT_INSTANCE, input, extensionRegistry);
  }

  public static Builder newBuilder() {
    return (Builder) DEFAULT_INSTANCE.createBuilder();
  }
  public static Builder newBuilder(im.turms.client.model.proto.notification.TurmsNotification prototype) {
    return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
  }

  /**
   * Protobuf type {@code im.turms.proto.TurmsNotification}
   */
  public static final class Builder extends
      com.google.protobuf.GeneratedMessageLite.Builder<
        im.turms.client.model.proto.notification.TurmsNotification, Builder> implements
      // @@protoc_insertion_point(builder_implements:im.turms.proto.TurmsNotification)
      im.turms.client.model.proto.notification.TurmsNotificationOrBuilder {
    // Construct using im.turms.client.model.proto.notification.TurmsNotification.newBuilder()
    private Builder() {
      super(DEFAULT_INSTANCE);
    }


    /**
     * <pre>
     * Response
     * request_id is used to tell the client that this notification is for the specific request
     * </pre>
     *
     * <code>optional int64 request_id = 1;</code>
     * @return Whether the requestId field is set.
     */
    @java.lang.Override
    public boolean hasRequestId() {
      return instance.hasRequestId();
    }
    /**
     * <pre>
     * Response
     * request_id is used to tell the client that this notification is for the specific request
     * </pre>
     *
     * <code>optional int64 request_id = 1;</code>
     * @return The requestId.
     */
    @java.lang.Override
    public long getRequestId() {
      return instance.getRequestId();
    }
    /**
     * <pre>
     * Response
     * request_id is used to tell the client that this notification is for the specific request
     * </pre>
     *
     * <code>optional int64 request_id = 1;</code>
     * @param value The requestId to set.
     * @return This builder for chaining.
     */
    public Builder setRequestId(long value) {
      copyOnWrite();
      instance.setRequestId(value);
      return this;
    }
    /**
     * <pre>
     * Response
     * request_id is used to tell the client that this notification is for the specific request
     * </pre>
     *
     * <code>optional int64 request_id = 1;</code>
     * @return This builder for chaining.
     */
    public Builder clearRequestId() {
      copyOnWrite();
      instance.clearRequestId();
      return this;
    }

    /**
     * <code>optional int32 code = 2;</code>
     * @return Whether the code field is set.
     */
    @java.lang.Override
    public boolean hasCode() {
      return instance.hasCode();
    }
    /**
     * <code>optional int32 code = 2;</code>
     * @return The code.
     */
    @java.lang.Override
    public int getCode() {
      return instance.getCode();
    }
    /**
     * <code>optional int32 code = 2;</code>
     * @param value The code to set.
     * @return This builder for chaining.
     */
    public Builder setCode(int value) {
      copyOnWrite();
      instance.setCode(value);
      return this;
    }
    /**
     * <code>optional int32 code = 2;</code>
     * @return This builder for chaining.
     */
    public Builder clearCode() {
      copyOnWrite();
      instance.clearCode();
      return this;
    }

    /**
     * <code>optional string reason = 3;</code>
     * @return Whether the reason field is set.
     */
    @java.lang.Override
    public boolean hasReason() {
      return instance.hasReason();
    }
    /**
     * <code>optional string reason = 3;</code>
     * @return The reason.
     */
    @java.lang.Override
    public java.lang.String getReason() {
      return instance.getReason();
    }
    /**
     * <code>optional string reason = 3;</code>
     * @return The bytes for reason.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getReasonBytes() {
      return instance.getReasonBytes();
    }
    /**
     * <code>optional string reason = 3;</code>
     * @param value The reason to set.
     * @return This builder for chaining.
     */
    public Builder setReason(
        java.lang.String value) {
      copyOnWrite();
      instance.setReason(value);
      return this;
    }
    /**
     * <code>optional string reason = 3;</code>
     * @return This builder for chaining.
     */
    public Builder clearReason() {
      copyOnWrite();
      instance.clearReason();
      return this;
    }
    /**
     * <code>optional string reason = 3;</code>
     * @param value The bytes for reason to set.
     * @return This builder for chaining.
     */
    public Builder setReasonBytes(
        com.google.protobuf.ByteString value) {
      copyOnWrite();
      instance.setReasonBytes(value);
      return this;
    }

    /**
     * <code>.im.turms.proto.TurmsNotification.Data data = 4;</code>
     */
    @java.lang.Override
    public boolean hasData() {
      return instance.hasData();
    }
    /**
     * <code>.im.turms.proto.TurmsNotification.Data data = 4;</code>
     */
    @java.lang.Override
    public im.turms.client.model.proto.notification.TurmsNotification.Data getData() {
      return instance.getData();
    }
    /**
     * <code>.im.turms.proto.TurmsNotification.Data data = 4;</code>
     */
    public Builder setData(im.turms.client.model.proto.notification.TurmsNotification.Data value) {
      copyOnWrite();
      instance.setData(value);
      return this;
      }
    /**
     * <code>.im.turms.proto.TurmsNotification.Data data = 4;</code>
     */
    public Builder setData(
        im.turms.client.model.proto.notification.TurmsNotification.Data.Builder builderForValue) {
      copyOnWrite();
      instance.setData(builderForValue.build());
      return this;
    }
    /**
     * <code>.im.turms.proto.TurmsNotification.Data data = 4;</code>
     */
    public Builder mergeData(im.turms.client.model.proto.notification.TurmsNotification.Data value) {
      copyOnWrite();
      instance.mergeData(value);
      return this;
    }
    /**
     * <code>.im.turms.proto.TurmsNotification.Data data = 4;</code>
     */
    public Builder clearData() {  copyOnWrite();
      instance.clearData();
      return this;
    }

    /**
     * <pre>
     * Notification
     * requester_id only exists when a requester triggers a notification to its recipients
     * Note: Do not move requester_id to TurmsRequest because it requires rebuilding
     * a new TurmsNotification when recipients need the requester_id.
     * </pre>
     *
     * <code>optional int64 requester_id = 5;</code>
     * @return Whether the requesterId field is set.
     */
    @java.lang.Override
    public boolean hasRequesterId() {
      return instance.hasRequesterId();
    }
    /**
     * <pre>
     * Notification
     * requester_id only exists when a requester triggers a notification to its recipients
     * Note: Do not move requester_id to TurmsRequest because it requires rebuilding
     * a new TurmsNotification when recipients need the requester_id.
     * </pre>
     *
     * <code>optional int64 requester_id = 5;</code>
     * @return The requesterId.
     */
    @java.lang.Override
    public long getRequesterId() {
      return instance.getRequesterId();
    }
    /**
     * <pre>
     * Notification
     * requester_id only exists when a requester triggers a notification to its recipients
     * Note: Do not move requester_id to TurmsRequest because it requires rebuilding
     * a new TurmsNotification when recipients need the requester_id.
     * </pre>
     *
     * <code>optional int64 requester_id = 5;</code>
     * @param value The requesterId to set.
     * @return This builder for chaining.
     */
    public Builder setRequesterId(long value) {
      copyOnWrite();
      instance.setRequesterId(value);
      return this;
    }
    /**
     * <pre>
     * Notification
     * requester_id only exists when a requester triggers a notification to its recipients
     * Note: Do not move requester_id to TurmsRequest because it requires rebuilding
     * a new TurmsNotification when recipients need the requester_id.
     * </pre>
     *
     * <code>optional int64 requester_id = 5;</code>
     * @return This builder for chaining.
     */
    public Builder clearRequesterId() {
      copyOnWrite();
      instance.clearRequesterId();
      return this;
    }

    /**
     * <code>optional int32 close_status = 6;</code>
     * @return Whether the closeStatus field is set.
     */
    @java.lang.Override
    public boolean hasCloseStatus() {
      return instance.hasCloseStatus();
    }
    /**
     * <code>optional int32 close_status = 6;</code>
     * @return The closeStatus.
     */
    @java.lang.Override
    public int getCloseStatus() {
      return instance.getCloseStatus();
    }
    /**
     * <code>optional int32 close_status = 6;</code>
     * @param value The closeStatus to set.
     * @return This builder for chaining.
     */
    public Builder setCloseStatus(int value) {
      copyOnWrite();
      instance.setCloseStatus(value);
      return this;
    }
    /**
     * <code>optional int32 close_status = 6;</code>
     * @return This builder for chaining.
     */
    public Builder clearCloseStatus() {
      copyOnWrite();
      instance.clearCloseStatus();
      return this;
    }

    /**
     * <code>.im.turms.proto.TurmsRequest relayed_request = 7;</code>
     */
    @java.lang.Override
    public boolean hasRelayedRequest() {
      return instance.hasRelayedRequest();
    }
    /**
     * <code>.im.turms.proto.TurmsRequest relayed_request = 7;</code>
     */
    @java.lang.Override
    public im.turms.client.model.proto.request.TurmsRequest getRelayedRequest() {
      return instance.getRelayedRequest();
    }
    /**
     * <code>.im.turms.proto.TurmsRequest relayed_request = 7;</code>
     */
    public Builder setRelayedRequest(im.turms.client.model.proto.request.TurmsRequest value) {
      copyOnWrite();
      instance.setRelayedRequest(value);
      return this;
      }
    /**
     * <code>.im.turms.proto.TurmsRequest relayed_request = 7;</code>
     */
    public Builder setRelayedRequest(
        im.turms.client.model.proto.request.TurmsRequest.Builder builderForValue) {
      copyOnWrite();
      instance.setRelayedRequest(builderForValue.build());
      return this;
    }
    /**
     * <code>.im.turms.proto.TurmsRequest relayed_request = 7;</code>
     */
    public Builder mergeRelayedRequest(im.turms.client.model.proto.request.TurmsRequest value) {
      copyOnWrite();
      instance.mergeRelayedRequest(value);
      return this;
    }
    /**
     * <code>.im.turms.proto.TurmsRequest relayed_request = 7;</code>
     */
    public Builder clearRelayedRequest() {  copyOnWrite();
      instance.clearRelayedRequest();
      return this;
    }

    // @@protoc_insertion_point(builder_scope:im.turms.proto.TurmsNotification)
  }
  @java.lang.Override
  @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
  protected final java.lang.Object dynamicMethod(
      com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
      java.lang.Object arg0, java.lang.Object arg1) {
    switch (method) {
      case NEW_MUTABLE_INSTANCE: {
        return new im.turms.client.model.proto.notification.TurmsNotification();
      }
      case NEW_BUILDER: {
        return new Builder();
      }
      case BUILD_MESSAGE_INFO: {
          java.lang.Object[] objects = new java.lang.Object[] {
            "bitField0_",
            "requestId_",
            "code_",
            "reason_",
            "data_",
            "requesterId_",
            "closeStatus_",
            "relayedRequest_",
          };
          java.lang.String info =
              "\u0000\u0007\u0000\u0001\u0001\u0007\u0007\u0000\u0000\u0000\u0001\u1002\u0000\u0002" +
              "\u1004\u0001\u0003\u1208\u0002\u0004\t\u0005\u1002\u0003\u0006\u1004\u0004\u0007" +
              "\t";
          return newMessageInfo(DEFAULT_INSTANCE, info, objects);
      }
      // fall through
      case GET_DEFAULT_INSTANCE: {
        return DEFAULT_INSTANCE;
      }
      case GET_PARSER: {
        com.google.protobuf.Parser<im.turms.client.model.proto.notification.TurmsNotification> parser = PARSER;
        if (parser == null) {
          synchronized (im.turms.client.model.proto.notification.TurmsNotification.class) {
            parser = PARSER;
            if (parser == null) {
              parser =
                  new DefaultInstanceBasedParser<im.turms.client.model.proto.notification.TurmsNotification>(
                      DEFAULT_INSTANCE);
              PARSER = parser;
            }
          }
        }
        return parser;
    }
    case GET_MEMOIZED_IS_INITIALIZED: {
      return (byte) 1;
    }
    case SET_MEMOIZED_IS_INITIALIZED: {
      return null;
    }
    }
    throw new UnsupportedOperationException();
  }


  // @@protoc_insertion_point(class_scope:im.turms.proto.TurmsNotification)
  private static final im.turms.client.model.proto.notification.TurmsNotification DEFAULT_INSTANCE;
  static {
    TurmsNotification defaultInstance = new TurmsNotification();
    // New instances are implicitly immutable so no need to make
    // immutable.
    DEFAULT_INSTANCE = defaultInstance;
    com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
      TurmsNotification.class, defaultInstance);
  }

  public static im.turms.client.model.proto.notification.TurmsNotification getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

  private static volatile com.google.protobuf.Parser<TurmsNotification> PARSER;

  public static com.google.protobuf.Parser<TurmsNotification> parser() {
    return DEFAULT_INSTANCE.getParserForType();
  }
}

